Docker -in- Docker проблемы с подключением к внутренней контейнерной сети (Anchore Engine) - PullRequest
0 голосов
/ 11 января 2020

У меня возникают проблемы при попытке подключиться к docker -композитной сети изнутри контейнера. Это файлы, с которыми я работаю. Все это работает, когда я ./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

Сообщение об ошибке:

Состояние системы

ИНФОРМАЦИЯ: anchorecli.clients.apiexternal: As Account = None

DEBUG: urllib3.connectionpool: запуск нового HTTP-соединения (1): 172.19.0.6:8228

Ошибка: не удалось получить доступ к службе привязки (user = user url = http://172.19.0.6: 8228 / v1 ): HTTPConnectionPool (host = '172.19.0.6', port = 8228): превышено максимальное количество повторов с URL: / v1 (вызвано NewConnectionError (': не удалось установить sh a новое соединение: [Errno 111] Отказано в соединении ',))

Шаги:

  1. run. sh создает образ контейнера и создает сеть anchore-net
  2. контейнер имеет сценарий точки входа, который делает несколько вещей
  3. , во-первых, он вызывает docker -компонованную сеть как отдельную ОТ контейнера
  4. , во-вторых, nstalls anch ore-cli, поэтому я могу запускать команды для контейнерной сети
  5. и, наконец, пытается получить системный статус якорного движка (d. c сеть), но именно здесь я сталкиваюсь с проблемами соединения HTTP-запроса.

Я динамически получаю IP-адрес контейнера конечной точки api движка привязки и задаю для этого URL-адрес запроса. Я также пытался передать эти переменные из командной строки, такие как: anchore-cli --u user --p pass --url http://$engine_ip/8228/v1 system status, но это выдает ту же ошибку.

Для тех из вас, кто нашел время, чтобы прочитать это, я очень ценю любой ввод, который вы можете дать мне, где проблема может лежать. Большое спасибо.

...