Docker 端口映射和容器关联

Docker 除了通过网络访问外,还提供了两个很方便的功能来满足服务访问的基本需求:一个是允许映射容器内应用的服务端口到本地宿主机;另一个是互联机制实现多个容器间通过容器名来快速访问。

1. 端口映射实现容器访问

端口映射有五种方式:映射所有 IP 的任意端口、映射所有 IP 的指定端口、映射指定 IP 的任意端口、映射指定 IP 的指定端口、映射 UDP 端口。

1.1 映射所有 IP 的任意端口

在创建或者启动容器时使用 -P (大写) 标记,Docker 会随机映射一个端口到容器内开放的网络端口:

docker run -d -P training/webapp python app.py

1.2 映射所有 IP 的指定端口、映射指定 IP 的任意端口、映射指定 IP 的指定端口、映射 UDP 端口

使用 -p (小写) 标记来指定端口,格式为

HostPort:ContainerPort[/udp] | IP::ContainerPort[/udp] | IP:HostPort:ContainerPort[/udp]

例如 docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

2. 互联机制便捷互访

容器的互联是指用一个容器名来访问到源容器,而不用指定具体的 IP 地址。

具体步骤是:

  1. 源容器启动时通过 --name 指定一个名字
  2. 新容器启动时通过 --link name:alias 连接源容器,其中 name 是要链接的容器的名称,alias 是别名。

例如:

docker run -d --name=db training/postgress
docker run -d -P --name=web --link db:db training/webapp python app.py

然后在 web 中就可以通过 db 来访问到 db 容器了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有时候我们会碰到需要多个服务组件容器共同协作的情况, 这往往需要多个容器之间有能够相互访问到对方的服务. 除了通过...
    我相信你爱过gg阅读 1,112评论 0 0
  • 0x01 核心概念 Docker镜像类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统...
    闲云逸心阅读 4,792评论 0 9
  • 一、Docker容器概述 1、docker中的容器技术演进 lxc --> libcontainer --> ru...
    任总阅读 3,963评论 0 26
  • docker提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务。本节讲解docker的网络功能,包括使...
    八目朱勇铭阅读 674评论 0 1
  • 很荣幸,我有两个姐姐,一个哥哥,一个弟弟和一个妹妹,有他们,我感到非常幸福。这篇文章就当作一份礼物送给你们,我亲爱...
    浅若灿阳阅读 597评论 0 1