Docker 是一種虛擬化技術,可以讓我們在同一臺主機上同時運行多個容器,不同容器之間互不干擾,但有時候我們需要讓不同容器之間相互通信,這時候我們可以使用 Docker 的網絡功能。
Docker 可以創建不同類型的網絡來滿足不同的通信需求,如“bridge”、“overlay”、“macvlan”、“none”等。其中,使用“bridge”網絡最為常見。
docker network create -d bridge mybridge
使用以上代碼可以創建一個名為 mybridge 的“bridge”網絡。接下來,我們需要將容器加入到這個網絡中。
docker run -itd --net=mybridge --name=container_1 ubuntu
docker run -itd --net=mybridge --name=container_2 ubuntu
使用以上代碼可以創建兩個名為 container_1 和 container_2 的容器,并將它們加入到 mybridge 網絡中。現在,這兩個容器就可以相互通信了。
可以使用 docker network inspect 命令查看網絡的詳細信息。
docker network inspect mybridge
可以使用 ping 命令測試容器之間的連通性。
docker exec -it container_1 ping container_2
如果以上命令能夠正常工作,說明容器之間已經建立了通信。
在容器內部,可以使用容器名來訪問其他容器,而不用知道容器的 IP 地址。例如,在 container_1 容器內部可以使用以下命令連接 container_2 容器內部的 SSH 服務。
ssh user@container_2
Docker 的網絡功能提供了便捷的容器通信方式,讓多個容器可以彼此協作,共同實現應用程序的功能。