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 的信息的。

 

posted @ 2015-11-28 17:56  从昨天就开始认真  阅读(348)  评论(1)    收藏  举报