外部访问容器 (也叫宿主机访问容器)

1.端口的映射
容器和宿主机之前进行通信

-p (小) 指定端口映射 主机(宿主):容器端口 【经常使用,多用于生产环境】 -P (大) 随机端口映射 容器内部的端口随机映射到主机的高端口 (65535(2^12-1)以上的端口)Port【多用于测试环境】随机映射的端口,有系统内核决定 sysclt -a | grep port | grep range net.ipv4.ip_local = 1024 就是随机端口数,没台设备的随机端口数可能不一致 常见的有5种方式 1.宿主机随机端口映射容器所有端口 2.宿主机随机端口映射容器的指定端口 3.【常用-掌握】宿主机指定端口映射容器指定端口 docker run -itd -p 80:80 nginx /bin/bash docker run -itd -p 8080:80 nginx /bin/bash docker run -itd -p 443:443 nginx /bin/bash docker run -itd -p 80:80 -p 443:443 nginx /bin/bash docker run -itd -p 80:80 -p 443:443 —restart=always 4.宿主机随机端口映射容器指定ip、指定端口 宿主机随机端口映射指定ip 172.0.0.10 指定端口 80 nginx容器 docker run -itd -p 172.0.0.10::80 nginx /bin/bash 5.宿主机指定端口映射到指定ip、指定端口 docker run -itd -p 172.0.0.10:8080:80 nginx /bin/bash

2.端口的暴露 dockerfile 在配置的时候有expose

容器访问容器(容器的互联)

解决方案:创建桥接的网络
1.创建一个桥接方式的自定义的网络,使用docker network create -d bridge network_name
-d: 指定Docker的网络类型
2.docker run -itd -p 172.0.0.10:80:80 —name nginx-01 —network my-net nginx
3.docker run -itd -p 172.0.0.10:8080:80 —name nginx-02 —network my-net nginx
4.进入容器互相ping通

容器网络的几种模式

1.host 模式 —net=host
2.container 模式
3.none 模式
4.bridge 模式【默认类型】
5.自定义网络

底层原理

docker ps
0.0.0.0:81 宿主机
1.无固定ip,就是全网段0.0.0.0
2.宿主机81端口
查看主机的ip地址
netstat -lntup
docker run 会创建一个iptable转发
iptable -t nat -L
注意:物理服务
em1
em2
em3
em4

docker port container_id 查看容器端口

容器内部访问容器

比如mysql容器和web容器之间的访问

Docker安装rancher 云容器管理

Docker网络四种模式,桥接网络

大部分时间默认使用桥接模式即可
image.png

Docker网络四种模式,host模式

image.png

Docker网络四种模式,container模式

image.png