У меня есть 4 контейнера (A, B, C, D), которые я хочу запустить с файлом docker -compose.yml
Все они используют одну и ту же пользовательскую сеть intranet
intranet:
driver: bridge
мой контейнер A использует
depends_on:
- B
- C
- D
для запуска всего сразу.
Я делаю docker-compose run A
, а затем я использую docker-compose exec
для входа контейнер B.
Из контейнера B я могу ping C
и ping D
, но когда я ping A
, я получаю
XXX@XXX:/$ ping A
ping: A: No address associated with hostname
Единственный способ, которым я могу пинговать A, это сделать docker ps
, получите имя запущенного контейнера и используйте его: ping projectname_A_run_1
.
Есть ли способ пропинговать контейнер A из контейнера B с помощью ping A
?
version: '3.4'
services:
A:
image: "${DOCKER_REGISTRY_DOMAIN}/${DOCKER_BUILD_TAG_A}"
hostname: "A"
ports:
- "${LISTEN:-3001}:3000"
tty: true
environment:
- DEBUG
- DOCKER_COMPOSE=1
- MYSQL_DATABASE
- MYSQL_PASSWORD
- MYSQL_USER
- NODE_VERSION
- NVM_DIR
- PROJECT_NAME=A
- QT_QPA_PLATFORM=offscreen
- RAILS_ENV
- REDIS_URL=redis://redis:6379
- SHELL=/bin/bash
user: "${DOCKER_USER}"
working_dir: "${A_WORKING_DIR}"
volumes:
- "./tmp/capybara:/tmp/capybara:rw"
networks:
- intranet
depends_on:
- redis
- db
- B
entrypoint: "${A_ENTRYPOINT}"
B:
image: "${DOCKER_REGISTRY_DOMAIN}/${DOCKER_BUILD_TAG_B}"
cap_add:
- NET_ADMIN
- NET_RAW
- SETFCAP
- SYS_PTRACE
security_opt:
- apparmor:unconfined
- seccomp:unconfined
hostname: "B"
environment:
- DEBUG
- DOCKER_COMPOSE=1
- PROJECT_NAME=B
- REDIS_HOST=localhost
- REDIS_PORT=6379
- SHELL=/bin/bash
user: "${DOCKER_USER}"
working_dir: "${B_WORKING_DIR}"
networks:
- intranet
depends_on:
- redis
entrypoint: "${B_ENTRYPOINT}"
db:
image: mysql:5.7
restart: unless-stopped
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: "${MYSQL_DATABASE}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
MYSQL_USER: "${MYSQL_USER}"
networks:
- intranet
volumes:
- ./mysql/db:/var/lib/mysql:rw
- ./mysql/initdb.d:/docker-entrypoint-initdb.d:ro
redis:
image: redis
ports:
- "${LISTEN:-6379}:6379"
restart: unless-stopped
networks:
- intranet
networks:
intranet:
driver: bridge