查看Container的IP地址
docker inspect <container name or id>| grep IPAddress
查看Container的映射的端口
docker port <container name or id> eg. docker port d8dac7399647 docker port hfq-jedi-zxf-eden
用iptables查看容器映射情况
iptables -t nat -nvL
iptables -t nat -nvL --line-number
举例新增端口的映射
##将主机31101 映射到 容器 6379端口
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 31101 -j DNAT --to-destination 192.168.42.2:6379
保存iptables规则
iptables-save
说明
192.168.42.2 是根据 docker inspect <container name or id>| grep IPAddress 的结果
端口映射完毕后,不能通过docker port d8dac7399647查询到结果
可以通过
iptables -t nat -nvL | grep 192.168.42.2
查询 映射关系
补充知识:docker容器通信和端口暴露问题中的机制
一直以来用docker容器间通信都是使用的link的方式,这就限制各个容器启动的前后顺序,总感觉很不灵活,因此这次探索了一下直接通过docker自带网卡分配的局域网来进行容器间的访问。
docker的端口暴露指的是,经过docker0这个网卡的转发,将容器本身的端口服务转发到暴露端口上,比如执行:
docker run -dit -p 8080:12345 --name=container_name image_name
使用docker0网卡分配的172.17.0.x这个局域网访问的时候,使用12345端口。在使用192.168.1.x或其他本机公网ip访问的时候,就是要用8080来访问了
时间有限,暂时不仔细分析了,有时间放图分析一下
以上这篇Docker动态给容器Container暴露端口操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
问题内容: 我正在尝试使用Docker容器运行PostgreSQL服务器,并从主机上与之连接。 我的配置是: 主机:Mac OS X 10.10.5 Docker 1.10.1 我已经做到了: 第1步 :为永久Postgres数据创建一个卷 步骤2 :启动postgres实例 更新 :如注释中所建议,我在运行容器时指定了端口映射 步骤3 :通过执行以下操作连接到Docker实例: 但是我只想通过以
EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,
我正在尝试用Docker和Selenium Grid建立一个自动化测试平台。在下图中,你可以看到我使用的结构。最上面是运行在计算引擎上的ubuntu服务器。左边是一个运行ubuntu 14.04的docker容器。该容器使用Google App Engine在localhost:8080上运行我们的项目。右边是Selenium集线器,有两个节点在端口4444上运行。 Docker和Selenium
我知道在linux主机系统上使用pulse audio是可能的,但是< code>paprefs是为Linux而不是mac构建的。
问题内容: 在我的工作中,我与docker一起工作,而该选项的工作方式就像将docker容器端口转发到机器的超级按钮一样。这使我可以通过示例添加使用某些端口的艰苦任务: 在9001端口为我的覆盖率报告提供帮助 我的应用程序的本地部署版本在端口9000中提供 手表实时重新加载端口35729 对于单元测试运行器,请使用9876端口 当我开始在Mac中使用Docker时,我遇到的第一个问题是:该选项不再
问题内容: 我知道关于在Windows上运行Docker有很多问题,但是这个问题是关于在Windows上运行全新的Windows Docker。 就我而言,我使用的是Windows 10 Pro 64位。根据站点,此版本应受支持。 我一直在遵循在这里找到的教程:https : //prakhar.me/docker-curriculum/ 我也尝试按照官方指南进行操作:https : //docs