Запуск контейнера не может быть пропингован от другого контейнера вверх - PullRequest
0 голосов
/ 16 января 2020

У меня есть 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

1 Ответ

0 голосов
/ 17 января 2020

Нашел решение:

Использование docker-compose run --name A A

Запущенный контейнер будет доступен с его именем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...