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

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

[root@docker ~]#

4.映射到指定地址的任意端口

使用IP::ContainerPort格式绑定本机的任意端口到容器的指定端口:


[root@docker ~]# docker run -itd -p 10.0.0.31::8082 --name nginx_5 nginx:latest
3436fd5fbdca6529c70c664f42edfd10d51edb0fb541b096b47c9b168887b2ca
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3436fd5fbdca nginx:latest "nginx -g 'daemon ..." 2 seconds ago Up 2 seconds 80/tcp, 10.0.0.31:32769->8082/tcp nginx_5
16a476837222 nginx:latest "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 80/tcp, 10.0.0.31:89->8081/tcp nginx_4
65fbfbe9761e nginx:latest "nginx -g 'daemon ..." 4 minutes ago Up 4 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 ..." 7 minutes ago Up 7 minutes 80/tcp, 0.0.0.0:5000->5000/tcp nginx_2
f769af3e9847 nginx:latest "nginx -g 'daemon ..." 22 minutes ago Up 22 minutes 0.0.0.0:32768->80/tcp nginx_1
[root@docker ~]#

容器启动后,本机会随机自动分配一个未被占用的端口。

 5.查看映射端口配置

使用docker port命令来查看当前映射的端口配置,也可以查看绑定的地址


[root@docker ~]# docker port nginx_1
80/tcp -> 0.0.0.0:32768
[root@docker ~]# docker port nginx_2
5000/tcp -> 0.0.0.0:5000
[root@docker ~]# docker port nginx_3
2700/tcp -> 0.0.0.0:3000
8863/tcp -> 0.0.0.0:2389
[root@docker ~]# docker port nginx_4
8081/tcp -> 10.0.0.31:89
[root@docker ~]# docker port nginx_5
8082/tcp -> 10.0.0.31:32769
[root@docker ~]#

注意:

容器有自己的内部网络和IP地址,使用docker inspect +容器ID可以获取容器的具体信息。

2、互联机制实现便捷访问

容器的互联是一种让多个容器中应用进行快速交互的方式,它会在源和接收容器之间建立连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。

1.自定义容器命名

连接系统依据容器的名称来执行。因此,首先要给容器定义一个简单好记的名字。在容器创建的时候,系统会随机创建一个容器名,但是并没有特殊的意义也不便于记忆,所有自定义容器名有一下亮点好处:

1.自定义的命名比较好记,比如一个Web应用容器,就可以起名web,既方便记忆也方便理解容器的作用;
2.当要连接其他容器时,即使重启,也可以使用自定义的容器名,,比如web容器连接到db容器。