docker网络连接
docker网络连接主要有两大作用,一是让外部网络可以访问容器,二是容器间互联。
外部网络访问容器
外部网络访问容器主要就是讲容器端口暴露给主机端口,也就是建立宿主和容器间端口的映射。一般在启动容器时通过指定映射来实现此目的。
-
-P
,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口。 -
-p
,Docker映射指定的端口到容器开放的网络端口。一般有三种形式,分别为:- 映射所有地址接口 =>
hostPort:containerPort
,docker run -d -p 5000:5000 training/webapp python app.py
。 - 映射到指定地址的指定端口 =>
ip:hostPort:containerPort
,docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
。 - 映射到指定地址的任意端口 =>
ip::containerPort
,docker run -d -p 127.0.0.1::5000 training/webapp python app.py
。
- 映射所有地址接口 =>
容器互联
容器互联主要完成的就是容器间的相互连接,合作完成共同的任务。
通过--link
标志
使用--link
实现容器互联,通过容器名及对/etc/hosts
的修改来实现便捷访问。例如:
# 启动被依赖busybox
docker run --name busybox01 -it --rm busybox
# 启动
docker run -it --rm --link busybox01:busy busybox
使用ping
测试结果如下:
使用docker网络
使用docker网络可以按照功能将容器进行隔离,提供更为强大的安全保证。示例如下:
# 新建network
docker network create -d bridge mynet
# 新建docker并关联network
docker run -it --name busybox01 --rm --network mynet busybox
# 新建docker并关联network
docker run -it --rm --network mynet busybox
ping
测试结果如下: