一)補充說明
Docker的網絡子系統可通過driver擴展。默認已有幾種driver提供Docker聯網服務,如下:
bridge //網橋,是docker的默認driver
host
none
overlay
macvlan
每種driver針對不同的使用場景,具體可參見官網:https://docs.docker.com/network/#network-drivers ,這裏摘錄如下:
User-defined bridge networks are best when you need multiple containers to communicate on the same Docker host.
Host networks are best when the network stack should not be isolated from the Docker host, but you want other aspects of the container to be isolated.
Overlay networks are best when you need containers running on different Docker hosts to communicate, or when multiple applications work together using swarm services.
Macvlan networks are best when you are migrating from a VM setup or need your containers to look like physical hosts on your network, each with a unique MAC address.
Third-party network plugins allow you to integrate Docker with specialized network stacks.
二)bridge配置
根據官網說明,bridge的使用場景是同一宿主機上的多個container互聯。由於bridge是docker的默認driver,因此當未特別指定聯網模式時,啓動容器將使用默認的bridge。但默認的bridge有諸多限制(具體可參見官方說明),因此實際情況是常自定義bridge。
自定義的bridge有以下好處:
好的隔離性和互操作性:連到同一自定義的bridge的各個容器默認相互之間曝露所有端口,並且不對外部曝露
自動提供容器之間的DNS解析服務:連到同一自定義的bridge的各個容器不用做特殊DNS配置,可直接通過hostname訪問
運行中容器聯網配置:可對運行中的容器配置自定義或取消配置自定義bridge
bridge之間相互獨立:用戶可創建N多個bridge,且連接於不同的bridge之上的容器相互獨立
A. 創建自定義bridge
$ docker network create [-d bridge] my-net //-d指定聯網模式,缺省時默認爲bridge; 可以docker network create --help查看選項參數
B. 創建新的容器
$ docker create --name my-nginx \ --network my-net \ --publish 8080:80 \ nginx:latest //以--network指明連接哪個bridge; --publish可以用-p替代
C. 將運行中的容器連接至自定義的bridge
$ docker network connect my-net my-nginx
D. 將運行中的容器從自定義bridge上移除
$ docker network disconnect my-net my-nginx
注:資料參考https://docs.docker.com/network/bridge/
三)根據自定義的bridge配置靜態IP
A. 創建自定義網絡(bridge)
$ docker network create --subnet=172.18.0.0/16 my-net //添加--subnet參數
B. 爲容器配置靜態IP
$ docker run -it --network my-net --ip 172.18.0.250 imageID bash //添加--ip參數
C. 爲容器配置特定hostname
$ docker run -it --network my-net --ip 172.18.0.250 -h hostname imageID bash //添加-h參數,或--hostname=Name
注:資料參考https://blog.csdn.net/gobitan/article/details/51104362