Docker 网络基础配置
Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。
1、端口映射实现访问容器
-p(小写的)可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有
ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
1.1 映射到指定地址的指定端
可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1
docker run -itd -p 127.0.0.1:5000:5000 --name con1 busybox sh
1.2 映射到指定地址的任意端口
使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口,可以看到容器con2分配的端口是32768
docker run -itd -p 127.0.0.1::5000 --name con2 busybox sh
1.3 使用 udp 标记来指定 udp 端口
docker run -itd 127.0.0.1:5000:5000/udp --name con3 busybox sh
1.4 映射所有接口地址
使用 hostPort:containerPort 格式本地的 5000 端口映射到容器的 5000 端口,可以执行
docker run -itd -p 5000:5000 --name con4 busybox sh
1.5 查看端口映射配置,如查看容器con1的信息:
docker port con1 5000 127.0.0.1:5000
#使用docker ps -a命令查看所建容器的信息,可以看到PORTS的信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4651a0bc6a85 busybox "sh" 3 seconds ago Up 2 seconds 0.0.0.0:4999->5000/tcp con4 cf0d73e6de97 busybox "sh" About a minute ago Up About a minute 127.0.0.1:5000->5000/udp con3 baee2530c688 busybox "sh" 3 minutes ago Up 3 minutes 127.0.0.1:32768->5000/tcp con2 c442fa55d497 busybox "sh" 4 minutes ago Up 4 minutes 127.0.0.1:5000->5000/tcp con1
2、容器互联
容器的连接(linking)系统是除了端口映射外,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道。
自定义容器名:容器的连接(linking)需要自定义一个容器命名,使用 --name 标记可以为容器自定义命名。
容器互联
使用 --link 参数可以让容器之间安全的进行交互。
#先创建一个新的数据库容器
docker run -itd --name db busybox sh
#创建一个新的 web1 容器,并将它连接到 db 容器
docker run -itd --name web1 --link db:db_web busybox sh
#创建一个新的 web2 容器,并将它连接到 db 容器
docker run -itd --name web2 --link db:db_web busybox sh
#进入容器web1
docker attach web1
ping db
ping web2
#在容器web1里面,可以ping通容器db,不能ping通web2
#因为在同一个主机上,容器web1,web2,db之间通过 ip 地址是可以相互直接 ping 通的。
ps:
1、容器互联是不能应用在跨主机的容器上的,容器互联的作用是使得容器之间可以相互通过容器名来通信。
2、用户可以链接多个父容器到子容器,比如可以链接多个 web 到 db 容器上。
3、在容器内部使用 cat /etc/hosts 是可以看到 link 的信息的。

浙公网安备 33010602011771号