Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker中的Docker与连接到内部集装箱网络(锚地引擎)有关_Docker_Http_Docker Compose_Containers_Dind - Fatal编程技术网

Docker中的Docker与连接到内部集装箱网络(锚地引擎)有关

Docker中的Docker与连接到内部集装箱网络(锚地引擎)有关,docker,http,docker-compose,containers,dind,Docker,Http,Docker Compose,Containers,Dind,我在尝试从容器内部连接到docker compose网络时遇到问题。这些是我正在处理的文件。当我/run.sh时,整个过程都会运行 Dockerfile: FROM docker/compose:latest WORKDIR . # EXPOSE 8228 RUN apk update RUN apk add py-pip RUN apk add jq RUN pip install anchorecli COPY dockertest.sh ./dockertest.sh COPY doc

我在尝试从容器内部连接到docker compose网络时遇到问题。这些是我正在处理的文件。当我
/run.sh
时,整个过程都会运行

Dockerfile:

FROM docker/compose:latest

WORKDIR .
# EXPOSE 8228

RUN apk update
RUN apk add py-pip
RUN apk add jq
RUN pip install anchorecli
COPY dockertest.sh ./dockertest.sh
COPY docker-compose.yaml docker-compose.yaml
CMD ["./dockertest.sh"]
docker-compose.yaml

services:
  # The primary API endpoint service
  engine-api:
    image: anchore/anchore-engine:v0.6.0
    depends_on:
    - anchore-db
    - engine-catalog
    #volumes:
    #- ./config-engine.yaml:/config/config.yaml:z
    ports:
    - "8228:8228"
..................
## A NUMBER OF OTHER CONTAINERS THAT ANCHORE-ENGINE USES ##
..................
networks:
  default:
    external:
      name: anchore-net
dockertest.sh

echo "------------- INSTALL ANCHORE CLI ---------------------"
engineid=`docker ps | grep engine-api | cut -f 1 -d ' '`
engine_ip=`docker inspect $engineid | jq -r '.[0].NetworkSettings.Networks."cws-anchore-net".IPAddress'`
export ANCHORE_CLI_URL=http://$engine_ip:8228/v1
export ANCHORE_CLI_USER='user'
export ANCHORE_CLI_PASS='pass'
echo "System status"
anchore-cli --debug system status #This line throws error (see below)
run.sh:

#!/bin/bash
docker build . -t anchore-runner
docker network create anchore-net
docker-compose up -d
docker run --network="anchore-net" -v //var/run/docker.sock:/var/run/docker.sock anchore-runner
#docker network rm anchore-net
错误消息:

系统状态

INFO:anchorecli.clients.apiexternal:As Account=None

调试:urllib3.connectionpool:启动新的HTTP连接(1):172.19.0.6:8228

错误:无法访问锚点服务(user=user url=):HTTPConnectionPool(host='172.19.0.6',port=8228):url超过最大重试次数:/v1 (由NewConnectionError(':建立新连接失败:[Errno 111]连接被拒绝',)引起)

步骤:

  • run.sh构建容器映像并创建网络
    anchore-net
  • 容器有一个entrypoint脚本,它可以执行多种操作
  • 首先,它提出了从容器内部分离出来的docker compose网络
  • 其次,nstalls锚定cli,以便我可以针对容器网络运行命令
  • 最后,尝试获取anchore引擎(d.c网络)的系统状态,但这正是我遇到HTTP请求连接问题的地方
  • 我正在动态地获取anchore引擎的api端点容器的IP,并设置请求的URL来实现这一点。我还尝试从命令行传递这些变量,例如:
    anchore cli--u user--p pass--url http://$engine\u ip/8228/v1系统状态
    ,但这会引发相同的错误


    对于那些花时间阅读本文的人,我非常感谢你们能给我提供的关于问题可能存在的任何信息。非常感谢。

    您几乎不应该使用
    docker inspect
    查找docker内部IP地址;该地址仅适用于一个非常特定的主机操作系统设置。请使用您的普通主机的IP地址或DNS名称以及发布的
    端口:
    。我感谢您的建议,您是否可以向我详细解释一下您的意思?我曾尝试使用localhost,并相应地映射了端口,但执行这些命令的容器无法识别它们。我不太熟悉容器内部的网络交互是如何工作的。