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 容器了

你可能感兴趣的:(Docker 端口映射和容器关联)