Docker 端口映射和容器互联
1 背景知识
在生产环境中需要多个服务组件共同写作,这依赖于容器之间能够相互访问。
通过网络访问之外,Docker还允许容器内进行端口映射。
另外一个是互联机制实现过个容器通过容器名进行快速访问。
2 Docker 端口映射实现访问容器
2.1 参数说明
当容器中运行一些网络应用,要让外部访问这些应用是,可以通过 -P
或 -p
指定端口映射。端口映射可以理解为端口转发。
相关参数
参数 | 说明 |
---|---|
"-P" | Docker 随机映射一个49000~4990端口到容器内部。 |
-p | Docker 指定固定一个段鸥到容器内部。 |
2.2 映射到一个随机端口
docker run -d -P registry:2
docker ps -a
//屏幕输出:
3e2c2f5ab03e registry:2 "/entrypoint.sh /etc…" 4 seconds ago Up 3 seconds 0.0.0.0:32769->5000/tcp, :::32769->5000/tcp trusting_leakey
2.3 映射到指定端口
docker run -d -p 5000:5000 registry:2
docker ps -a
//屏幕输出:
ff87410fdc32 registry:2 "/entrypoint.sh /etc…" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp wonderful_robinson
2.4 查看映射端口配置
使用 docker port
命令来查看当前映射的端口配置和绑定的IP地址。
docker port wonderful_robinson
//屏幕输出:
5000/tcp -> 0.0.0.0:5000
5000/tcp -> [::]:5000
3 Docker 容器互联
使用 --link
参数可以让容器之间安全地进行交互。
3.1 创建数据库容器
docker run -d --name db postgres
3.2 创建新的web 容器
docker run -d -p 5000:5000 --name registry --link db:db registry:2
--link 的参数格式为--link name:alias
其中name 是要连接容器的名称,alias 是这个连接的别名。
这种互联机制相当于在两个容器之间创建了一个虚拟机通道。