详解Docker 端口映射与容器互联

2020-06-17 06:42:14易采站长站整理

[root@docker ~]#

-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。支持的格式有:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort 。

2.映射所有接口地址

使用HostPort:ContainerPort格式将本地的5000端口映射到容器的5000端口:


[root@docker ~]# docker run -itd -p 5000:5000 --name nginx_2 nginx:latest
5bdca2bde33d7db72861399ca49e82f0d209d13289d20b181843da5b10e6f2d3
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 8 seconds ago Up 7 seconds 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 15 minutes ago Up 15 minutes 0.0.0.0:32768->80/tcp nginx_1
[root@docker ~]#

此时默认会绑定本地所有接口上的所有地址。多次使用-p参数可以绑定多个端口:


[root@docker ~]# docker run -itd -p 3000:2700 -p 2389:8863 --name nginx_3 nginx:latest
65fbfbe9761eb5146501311016d681f210b1891ca5f5af62dc978ad6f2a22750
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 3 seconds ago Up 2 seconds 80/tcp, 0.0.0.0:3000->2700/tcp, 0.0.0.0:2389->8863/tcp nginx_3
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 18 minutes ago Up 18 minutes 0.0.0.0:32768->80/tcp nginx_1
[root@docker ~]#

3.映射到指定地址的指定端口

可以使用IP:HostPort:ContainerPort格式指定映射使用一个特定地址:


[root@docker ~]# docker run -itd -p 10.0.0.31:89:8081 --name nginx_4 nginx:latest
16a476837222d413926053e1c8175c993b0495732073fbc6251dfd4696db8242
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
16a476837222 nginx:latest "nginx -g 'daemon ..." 4 seconds ago Up 3 seconds 80/tcp, 10.0.0.31:89->8081/tcp nginx_4
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 80/tcp, 0.0.0.0:3000->2700/tcp, 0.0.0.0:2389->8863/tcp nginx_3
5bdca2bde33d nginx:latest "nginx -g 'daemon ..." 5 minutes ago Up 5 minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 20 minutes ago Up 20 minutes 0.0.0.0:32768->80/tcp nginx_1