一、docker 网络管理
- Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的默认网关。
- 因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
- Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。
- 如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。
1.1 随机映射端口
docker run -d --name test1 -P nginx(镜像) #-P不指定,随机映射端口(从32768开始)
1.2指定端口映射
docker run -id -p 49156:80 nginx
docker ps -a
#查看容器的输出和日志信息
docker logs 容器的id/名称
Docker的网络模式
-
Host : 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
-
Container : 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围
-
None : 该模式关闭了容器的网络功能
-
Bridge : 默认为该模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat表配置与宿主机通信
-
自定义网络
注:如果与主机或虚拟机共用IP和端口,端口不能出现重复造成冲突现象
查看docker网络列表
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、none 、host 命令:docker network ls 或 docker network list
指定容器的网络模式
- 使用docker run 创建Docker容器时,可以用–net或–network 选项指定容器的网络模式
1.host模式:使用--net=host 指定
2.none模式:使用 --net=none 指定
3.container模式:使用--net=container∶NAME_or_ID指定
4.bridge模