当前位置: 首页 > 编程笔记 >

Docker 网络之端口绑定的方法

佟高澹
2023-03-14
本文向大家介绍Docker 网络之端口绑定的方法,包括了Docker 网络之端口绑定的方法的使用技巧和注意事项,需要的朋友参考一下

外部访问容器

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。

-P 标记时

Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

-p 标记时

则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort

映射所有接口地址

使用 hostPort:containerPort 格式本地的 5000 端口映射到容器的 5000 端口

$ sudo docker run -d -p 5000:5000 training/webapp python app.py

此时默认会绑定本地所有接口上的所有地址。

映射到指定地址的指定端口

可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1

$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

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

使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口

$ sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
#还可以使用 udp 标记来指定 udp 端口
$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

查看映射端口配置

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

$ docker port <container> 

注意:

容器有自己的内部网络和 ip 地址(使用 docker inspect 可以获取所有的变量,Docker 还可以有一个可变的网络配置。)

-p 标记可以多次使用来绑定多个端口,例如

$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 系统:win11专业版 wsl2:ubuntu20.04.6 LTS 问题: 第一次安装docker后,创建镜像,创建容器都挺正常,端口映射也正常。 今天就出问题,创建容器时,配置端口映射,正常,但是宿主机访问映射端口没有响应. 假设端口映射18080:8080,我还在容器内部使用 curl http://localhost:8080有响应,使用在内部是正常,但是宿主机浏览器访问http://lo

  • 本文向大家介绍Docker端口映射实现网络访问的方法,包括了Docker端口映射实现网络访问的方法的使用技巧和注意事项,需要的朋友参考一下 Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢? 下面我来介绍下docker通过端口映射来实现网络访问 一、从外部访问容器应用 在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 当容器中运行一些网

  • 问题内容: 我尝试使用docker-py(版本1.3.1)启动Docker容器。我想将容器内部端口映射到其他端口,但无法正确公开它们。 我这样做是这样的: 在当前情况下,输出如下: docker ps告诉我: 但是如果我给它映射3000-> 3000,2424-> 2424和2480-> 2480 关键是从命令行我可以使用正确的端口映射启动容器。那是 docker运行-d -p 3001:3000

  • 本文向大家介绍Python实现网络端口转发和重定向的方法,包括了Python实现网络端口转发和重定向的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现网络端口转发和重定向的方法。分享给大家供大家参考,具体如下: 【任务】 需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting)。 【解决方案】 两个使用threading

  • 问题内容: 我有docker主机,内部有一个容器。 泊坞窗主机仅在IPv6接口上绑定端口,而不在IPv4上绑定端口。 这是输出 现在我在主机上有40122端口,可与容器上的端口22链接。 我想通过SSH进入该容器,但无法将其绑定到IPv6 这是我的Docker版本 我跑了 ps辅助 问题答案: 正如@ daniel- t在评论中指出的那样:github.com/docker/docker/issu

  • 我一直想做实时聊天。 多年前,我在PHP Ajax Mysql中就这样做了,并破坏了我的服务器。 然后我用Flash试了一个文本文件。我放弃了,已经10年没有尝试过了。但是最近我听说了webhooks和websockets。 它们似乎都是做到这一点的一种方式,但我并没有真正理解其中的区别。 任何人都可以解释吗? 谢谢!