У меня возникают проблемы при попытке подключиться к 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] Отказано в соединении ',))
Шаги:
- run. sh создает образ контейнера и создает сеть
anchore-net
- контейнер имеет сценарий точки входа, который делает несколько вещей
- , во-первых, он вызывает docker -компонованную сеть как отдельную ОТ контейнера
- , во-вторых, nstalls anch ore-cli, поэтому я могу запускать команды для контейнерной сети
- и, наконец, пытается получить системный статус якорного движка (d. c сеть), но именно здесь я сталкиваюсь с проблемами соединения HTTP-запроса.
Я динамически получаю IP-адрес контейнера конечной точки api движка привязки и задаю для этого URL-адрес запроса. Я также пытался передать эти переменные из командной строки, такие как: anchore-cli --u user --p pass --url http://$engine_ip/8228/v1 system status
, но это выдает ту же ошибку.
Для тех из вас, кто нашел время, чтобы прочитать это, я очень ценю любой ввод, который вы можете дать мне, где проблема может лежать. Большое спасибо.