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 地址。
具体步骤是:
- 源容器启动时通过 --name 指定一个名字
- 新容器启动时通过 --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 容器了
网友评论