05 Docker 容器的端口映射


容器端口映射

  1. docker的端口映射,能保证在外部网络 访问 同一设备上不同容器时候 不会因为端口问题产生冲突。

  2. docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器。

  3. 容器启动时通过-p参数映射端口:

1
2
3
4
5
-p hostPort:containerPort       # 0.0.0.0:80
-p ip:hostPort:containerPort # 指定宿主机IP地址,例如192.168.0.136:80,多个容器都想使用80端口,添加多个IP
-p ip::containerPort # 随机端口 ,32768端口,内核参数决定的net.ipv4.ip_local_port_range = 32768 60999
-p hostPort:containerPort:udp # udp
-p 81:80 –p 443:443 # 指定多个

指定端口

1
2
3
4
[root@linux-node1 ~]# docker run -d -p 80:80 --name web1 nginx:1.16.1
8eee8d6ffc1580a2f80e4472ed51990af6c525a1d2734cac216f07b9ed816650
[root@linux-node1 ~]# netstat -tnlp|grep 80
tcp6 0 0 :::80 :::* LISTEN 1774/docker-proxy

多端口绑定

1
2
3
4
5
6
[root@linux-node1 ~]# docker run -d -p 443:443 -p 82:80 --name web2 nginx:1.16.1

[root@linux-node1 ~]# netstat -tnlp|grep docker
tcp6 0 0 :::80 :::* LISTEN 1774/docker-proxy
tcp6 0 0 :::82 :::* LISTEN 1969/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 1957/docker-proxy

随机

[root@linux-node1 ~]# docker run -d -P –name web3 nginx:1.16.1

1
2
3
4
5
6
[root@linux-node1 ~]# netstat -tnlp|grep docker
tcp6 0 0 :::5000 :::* LISTEN 2397/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 1774/docker-proxy
tcp6 0 0 :::82 :::* LISTEN 1969/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 1957/docker-proxy
tcp6 0 0 :::32768 :::* LISTEN 2517/docker-proxy

映射到指定的协议 tcp 或 udp

1
docker run -d -p 127.0.0.1:5000:5000/udp  training/webapp python app.py