Контейнеры должны находиться в одной сети docker, а имена хостов являются именами служб (по умолчанию).
Я советую использовать docker -compose , который предназначен чтобы запустить несколько контейнеров со ссылками между ними.
Априори, я бы сделал что-то подобное в моем docker -compose.yml:
version: '2.4'
services:
db:
build:
context: .
dockerfile: db.dockerfile
environment:
- MYSQL_ROOT_PASSWORD=foo
web:
build:
context: .
dockerfile: web.dockerfile
Затем введите docker-compose up -d
. Наконец, из веб-контейнера вы сможете добраться до хоста 'db'.
Если вы хотите работать только с dockerfiles, это также возможно, если мое первое предложение этого поста будет проверено. По умолчанию контейнеры находятся в сети bridge
, поэтому ваши контейнеры, вероятно, находятся в той же сети, но вы должны связать их, чтобы затем можно было обмениваться данными. После того, как вы запустили контейнер db
, вы должны запустить контейнер web
со следующей опцией:
docker run ... --link <db_container_name>:<db_host_name_in_web_container> ...
Таким образом, вы сможете достичь db
с web
.