看这里:
戳此链接 通往 关于 Docker 所有的学习文章 !
前言:
在实践中,我们经常会遇到多个服务组件容器 共同协作的情况!这往往需要多个容器之间可以互相访问对方的服务!
要实现这点,有两种快捷的功能来满足服务访问的基本需求:
①、允许映射容器内应用的服务端口到本地宿主主机!(本章讲)
②、通过 互联机制 实现多个容器间 通过容器名 来快速访问!(下章 :https://blog.csdn.net/ljlfather/article/details/105679224)
开始:
1、从外部访问容器应用 —— 做端口映射
在启动容器的时候,如果我们不指定对应的参数,那么我们在容器外是无法通过网络来访问容器内地服务! 我们要想访问容器内部的一些网络应用时,可以在 run 容器时 使用 -p 或 -P 选项 来指定端口映射!
当你使用 -P 参数的时候,Docker 会随机映射一个端口 到容器内部的开放的网络端口!
要想从容器外部访问容器内部的网络服务!必须做 端口映射!!!
root@zhengzelin:~# docker run -itd -P nginx:latest
741b68bfd7b0b6bff76e5bacff6decff133041f30ea97dc42c359aa630b2100d
root@zhengzelin:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
741b68bfd7b0 nginx:latest "nginx -g 'daemon of…" 4 seconds ago Up 3 seconds 0.0.0.0:32770->80/tcp amazing_sutherland
可以看出,宿主机 的 32770 端口 被映射到了 容器的80端口!那么我们访问 宿主机的 32770 端口试试:
1、首先查看你宿主机的IP地址
ip a 即可!
2、使用其他浏览器访问也可以 ,或者使用 elinks 访问!
root@zhengzelin:~# yum -y install elinks
root@zhengzelin:~# elinks http://172.24.25.40:32770

上面的结果告诉我们,端口映射成功,当然你也可以使用 -p 指定端口映射,而不是 -P 随机端口映射!
"注意: -p 指定的端口,一个端口只能绑定一个容器!"
-p 的格式: ip:hostport:containerport (IP可以是你的宿主机ip,也可以是0.0.0.0)
ip::containerport (IP可以是0.0.0.0,这里 "没有指定宿主机Port ," 这就 "相当于 -P 参数了,生成随机端口,不推荐使用!")
HostPort:ContainerPort (这个格式也标准,也省略了 IP,更加方便推荐使用这个格式)
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
例子:
"格式1:(指定端口!)"
docker run -itd -p 172.24.25.40:9999:80 nginx:latest
docker run -itd -p 0.0.0.0:9998:80 nginx:latest
"格式2:(随机分配端口,相当于 -P 参数)"
docker run -itd -p 172.24.25.40::80 nginx:latest
docker run -itd -p 0.0.0.0::80 nginx:latest
"格式3:(指定端口)"
docker run -itd -p 10010:80 nginx:latest
查看结果: 如下图所示! "当我使用 elinks http://宿主机ip:10010(等指定的端口) 时,发现可以访问成功!"

2、指定 udp 协议的端口映射:
我们除了可以做 tcp 的端口映射,当然还可以做 udp 的端口映射
格式: run - p ip:HostPort:ContainerPort/udp 即可!
3、查看端口映射的配置 —— docker port
格式: docker port 容器名
root@zhengzelin:~# docker port admiring_kapitsa
80/tcp -> 0.0.0.0:32776
Docker 互联机制:
本文介绍了如何通过端口映射实现Docker容器之间的互访。详细讲解了如何从外部访问容器应用,包括指定TCP和UDP端口映射,并展示了如何查看端口映射配置。下篇将探讨Docker互联机制,让容器能通过容器名直接访问彼此。
4888

被折叠的 条评论
为什么被折叠?



