hapus network_mode: bridge
ini dari file penulisan Anda, berhasil untuk saya =).
Penghargaan untuk tgogos:Saya hanya perlu menggunakan jembatan non-default.
Untuk kelengkapan, inilah konfigurasi kerja saya.
version: "3"
services:
main:
networks:
test:
image: python:3.5.2
entrypoint: /usr/bin/yes
another:
networks:
test:
image: python:3.5.2
entrypoint: /usr/bin/yes
networks:
test:
driver: bridge
Dan ping sekarang berfungsi.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
faa9f96d46a9 python:3.5.2 "/usr/bin/yes" 9 seconds ago Up 9 seconds dockerplayground_main_1
5b2d56ac0cd7 python:3.5.2 "/usr/bin/yes" 9 seconds ago Up 8 seconds dockerplayground_another_1
$ docker exec -it faa ping another
PING another (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.054 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.066 ms
Solusi lain yang saya coba dan berhasil adalah secara eksplisit menautkan konten yang ingin Anda ping dengan nama host. Misalnya, saya punya postgres
wadah, dan server
ingin menyambungkannya.
Jalankan server
dengan yang berikut
docker run --name server --link postgres someserver:latest
Di lingkungan penampung server, Anda kemudian dapat melakukan ping dengan (diberikan postgres
berada di jembatan/jaringan yang sama dan sedang berjalan)
ping postgres
Sejak --link
sudah tidak digunakan lagi, disarankan untuk menggunakan jembatan jaringan.
docker network create YOURNETWORK
docker run --name postgres --network='YOURNETWORK' postgres:latest
docker run --name server --network='YOURNETWORK' server:latest
maka kedua wadah tersebut dapat melakukan ping satu sama lain dengan nama.