外部访问容器
在 Docker 容器中运行网络应用时,可以通过端口映射将容器内的端口暴露给外部,从而让外部访问这些应用。Docker 提供了 -P
和 -p
参数来指定端口映射。
1. 使用 -P
标志
-P
标志会随机映射一个 49000-49900 范围内的端口到容器内开放的网络端口。
示例:
$ sudo docker run -d -P training/webapp python app.py
运行后,可以使用 docker ps
查看映射的端口:
$ sudo docker ps -l
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc533791f3f5 training/webapp:latest python app.py 5 seconds ago Up 2 seconds 0.0.0.0:49155->5000/tcp nostalgic_morse
这里,主机的 49155 端口被映射到了容器的 5000 端口,可以通过访问主机的 49155 端口来访问容器内的 web 应用。
2. 查看容器日志
使用 docker logs
可以查看运行容器的日志信息:
$ sudo docker logs -f nostalgic_morse
输出示例:
* Running on http://0.0.0.0:5000/
10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP/1.1" 200 -
10.0.2.2 - - [23/May/2014 20:16:31] "GET /favicon.ico HTTP/1.1" 404 -
3. 使用 -p
标志指定端口
-p
标志允许指定需要映射的端口,并且在一个指定端口上只能绑定一个容器。格式为 ip:hostPort:containerPort
或 ip::containerPort
或 hostPort:containerPort
。
示例:
$ sudo docker run -d -p 5000:5000 training/webapp python app.py
此命令会将本地的 5000 端口映射到容器的 5000 端口。
4. 映射到指定地址和端口
可以使用 ip:hostPort:containerPort
格式来指定映射使用一个特定地址,例如 localhost 地址 127.0.0.1。
示例:
$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
5. 映射到指定地址的任意端口
使用 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
6. 查看映射端口配置
使用 docker port
来查看当前映射的端口配置,也可以查看绑定的地址。
示例:
$ docker port nostalgic_morse 5000
127.0.0.1:49155
注意:
- 容器有自己的内部网络和 IP 地址(使用
docker inspect
可以获取所有的变量,Docker 还有一个可变的网络配置)。 -p
标志可以多次使用来绑定多个端口。
示例:
$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。