6个命名空间
User、Mount、Pid、UTS、Net、IPC
四种网络模式
- host模式:使用–network=host指定
- 相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。
- 容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。
- 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
- bridge模式:使用–net=bridge指定
- 相当于Vmware中的Nat模式,容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)。
- 通过docker0网桥以及Iptables nat表配置与宿主机通信。
- Bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。
- none模式:–net=none指定
- 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。该模式关闭了容器的网络功能。
- 在以下两种情况下是有用的:容器并不需要网络(例如只需要写磁盘卷的批处理任务),overlay。
- container模式:–net=container:NAME_or_ID指定
- 指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。
- 新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。
- 两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
1 | # 查看网络模式详情 |
Bridged containers
- –hostname HOSTNAME选项为容器指定主机名。
docker run --rm --net bridge --hostname bbox.test.com busybox:latest nslookup bbox.test.com
- –dns DNS_SERVER_IP 为容器指定所使用的dns服务器地址。
docker run --rm --dns 172.16.0.1 busybox:latest nslookup docker.com
- –add-host HOSTNAME:IP 为容器指定本地主机名解析项。
docker run --rm --dns 172.16.0.1 --add-host "docker.com:172.16.0.10" busybox:latest nslookup docker.com
Docker端口暴露
- -p
- 将指定容器端口映射至主机所有地址的一个动态端口
- -p
: - 将容器端口
映射至指定的主机端口
- 将容器端口
- -p
:: - 将指定的容器端口
映射至主机指定 的动态端口
- 将指定的容器端口
- -p
: : - 将指定的容器端口
映射至主机指定 的端口
- 将指定的容器端口
- -P 大写的P,暴露所有端口(指暴露镜像里的全部端口)
docker守护进程
1 | # 远程操作一个容器 |
自定义docker0
1 | # docker0桥网络属性信息:/etc/docker/daemon.json |