docker——端口映射与容器互联
在生产环境中,单个服务往往是独立的,但是服务与服务之间往往是相互依赖的,
这样对于容器来说,容器之间就需要相互访问。
除了网络访问之外,docker还提供了另外两种方式来满足服务的访问。
一:允许映射容器内应用的服务端口到本地宿主机;
二:互联网机制实现多个容器间通过容器名来快速访问;
1.端口映射实现访问容器
(1)从外部访问容器应用:随机分配本机端口
在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的应用和服务的。
比如启动一个nginx:
但是你知道怎样通过公网来访问这个程序吗?你不知道,也没人知道。
可能你会说我可以给这个程序绑定一个IP,确实可以,但是如果你没有可用的IP呢?
我们可以通过-P来指定端口映射,docker会随机映射一个主机端口到容器上。
将本机的32770端口映射到容器的80端口,也就是nginx默认的端口,这样就可以通过32770这个端口去访问nginx服务。
(2)一对一指定
使用HostPort:ContainerPort格式将本地的某个端口绑定到容器的某个端口之上。
将本机的80端口映射到容器的80端口之上。一次可以使用多个-p,这样可以实现多组绑定。
(3)映射到指定地址和端口到容器指定端口
使用IP:HostPort:ContainerPort指定一个特定地址和端口。
(4)映射到指定地址到随机端口
使用IP::ContainerPort指定本机的任意端口到容器的指定端口。
(5)查看映射端口配置
使用docker port查看当前映射的端口位置。
注意:每个容器都会有一个随机分配的内网地址,通过docker inspect可以查看。类似于虚拟机的桥接模式。
2.互联机制实现便捷互访
容器互联是一种让多个容器中应用快速交互的方式。
它会在源和接受容器之间创建连接关系,接受容器通过容器名快速访问到源容器,而不用指定具体的IP地址。
使用--link参数可以让容器之间安全的进行交互。
创建一个数据库:
创建一个web容器,将其连接到db容器。
命令解释:
docker run -d -P --name web --link db:db docker.io/nginx
--link参数的格式为--link name:alias,name是要连接的容器名称,alias是这个连接的别名。
Docker相当于在两个互联的容器之间创建了一个虚拟通道,而且不用映射它们的端口到宿主主机上。
在启动db容器的时候并没有使用-p和-P标记,从而避免了暴露数据库服务端口到外部网络上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2017-12-20 装饰器实例
2017-12-20 生成器、迭代器脚本实例
2017-12-20 魔法方法和属性
2017-12-20 将socket通信实现多进程
2017-12-20 认证客户端的链接合法性
2017-12-20 随机生成验证码
2017-12-20 ntp时间服务器