暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker 容器网络管理:端口映射和日志查看

287

外部访问容器

在 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

    非常感谢您读到这里!如果您觉得这篇文章对您有帮助,请不要忘记关注公众号。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。

    点击页面右上角的“关注”按钮,不错过任何精彩内容!

    扫码获取联系方式



文章转载自周同学带您玩AI,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论