小白网-奉贤部落-奉贤免费信息发布平台

查看: 16|回复: 0
打印 上一主题 下一主题

docker创建容器,端口映射(docker启动端口映射)

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 13:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Docker不仅提供网络访问,还提供两种便捷的功能,满足服务访问的基本需求。一个是允许将容器中应用程序的服务端口映射到本地主机;另一个是互联机制,可以通过容器名快速访问多个容器。
1.端口映射实现容器访问1。从外部访问容器应用程序。
启动容器时,如果不指定相应的参数,就无法通过容器外部的网络访问容器内部的网络应用和服务。当容器中运行一些网络应用程序时,可以通过-p或-P参数来引用商品映射。使用-P (capital)选项时,Docker会随机将一个49000-49900的商品映射到其余内部设备的开放网口。
可以看到本地计算机的32770映射到容器的8080端口,通过访问主机的32770端口可以访问容器中的web应用。
2.映射所有接口地址。
使用HostPort:ContainerPort的格式将本地8080端口映射到容器的8080端口,您可以执行以下命令:
此时,所有本地接口上的所有地址都将被默认绑定,并且可以通过多次使用-p标志来绑定多个端口。
3.映射到指定地址的指定端口
您可以使用IP:HostPort:ContainerPort格式来指定映射使用特定的地址,例如localhost地址127.0.0.1。
[root @ localhost ~]# docker run-it-name test-Tomcat-p 127 . 0 . 0 . 1:8080:8080 299 D4 C2 f 91 FD
4.映射到指定地址的任何端口
使用IP::ContainerPort将localhost的任意端口绑定到容器的端口8080,本地主机会自动分配一个端口:
[root @ localhost ~]# docker run-it-name test-Tomcat-p 127 . 0 . 0 . 1::8080 299 D4 C2 f 91 FD
第二,容器互连——链接参数允许容器安全地交互。
参数格式:- link name:alias,name是要链接的容器的名称,allias是此连接的别名。
如果同一个主机上的多个docker容器想要相互通信,可以使用容器的ip地址进行通信,也可以使用主机的ip加上容器暴露的端口进行通信。前者会导致ip地址硬编码,不方便迁移,而且重启容器后ip地址会发生变化。除非使用固定ip,否则后者的通信方式相对简单,只能依靠监听暴露端口的过程进行有限的通信。通信docker的链接机制可以通过一个名称与另一个容器进行通信。链接机制有助于容器发现其他容器,并可以安全地将一些连接信息传输到其他容器。
1.首先运行一个容器并指定一个容器名,也就是我们要连接的容器。
测试mysql
2.运行另一个容器并链接到上面开始的容器。
docker run-it-name web _ Tomcat-link MySQL-test:link-MySQL-test Tomcat
虽然tomcat和mysql可以使用链接机制进行通信,但是它们是如何通信的呢?它们之间的通信不是通过端口号,而是通过环境变量。docker会将源容器myslq中定义的环境变量导入到接收容器中。让我们分别看看这两个容器的环境变量。
容器互联有两种方式,一种是通过环境变量;二是/etc/hosts文件;
1.环境变量
mysql-test容器环境变量如下:
web_tomcat容器环境变量如下:
在web_tomcat容器中,可以看到连接的原始容器的相关环境变量信息。
2./etc/hosts文件
使用链接机制后,您可以通过指定的名称与目标容器进行通信。这个原理其实是通过在/etc/hosts中添加名称和IP解析关系来实现的。下面是web_tomcat容器中/etc/hosts文件的信息。
/etc/hosts文件记录了原始容器和连接容器的信息。通过这个文件,可以很好地分析它们之间的关系,也就是完成两个容器之间的通信。
并且可以在web_tomcat中安装ping命令,测试是否可以与mysql-test容器进行通信。
# apt-get update# apt install iputils-PING# PING MySQL-test PING link-MySQL-test(172 . 17 . 0 . 2)56(84)字节的数据。 64字节来自link-MySQL-test(172 . 17 . 0 . 2):icmp _ seq = 1 TTL = 64 time = 0.103 ms64字节来自link-MySQL-test(172 . 17 . 0 . 2):icmp _ seq = 2 TTL = 64 time = 0.173 ms64字节来自link-MySQL-test(172 . 17 . 0 . 2):icmp _ seq
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

GMT+8, 2025-8-21 19:15 , Processed in 0.061875 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表