Как правило, в этой настройке вы позволяете каждому контейнеру работать на своем «естественном» порту. Для подключений извне Docker вам необходимо сопоставление ports:
, и вы будете получать доступ к контейнеру через его опубликованный порт на IP-адресе хоста. Для соединений между контейнерами Docker (при условии, что они находятся в одной сети, и если вы использовали голый docker run
, вы создали эту сеть вручную), вы используете имя контейнера и номер внутреннего порта контейнера.
Мы можем очистить файл docker-compose.yml
, удалив некоторые ненужные строки (container_name:
и expose:
на самом деле не имеют практического эффекта) и позволив образу запустить его по умолчанию command:
на порту по умолчанию, и только переназначение с ports:
. Мы получили бы:
version: '3.5'
services:
RedisServerA:
image: redis:3.2.11
volumes:
- ../docker/redis/RedisServerA:/data
ports:
- 26379:6379
RedisServerB:
image: redis:3.2.11
volumes:
- ../docker/redis/RedisServerB:/data
ports:
- 6379:6379
Между контейнерами вы будете использовать порт по умолчанию
redis-cli -h RedisServerA
redis-cli -h RedisServerB
Из-за пределов Docker вы можете использовать имя хоста сервера и опубликованные порты
redis-cli -h server.example.com -p 23679
redis-cli -h server.example.com