docker容器与多个TCP端口
我创build了一个基于github链接的docker容器 – https://github.com/wurstmeister/kafka-docker
并注意到显示3个端口和一个端口映射到主机。
我了解从容器暴露给主机系统的端口2181。
但是这3个端口是什么 – 22 / tcp,2888 / tcp,3888 / tcp ..如果这些端口没有暴露给主机系统显示。
a5779d08be33 wurstmeister/zookeeper "/bin/sh -c '/usr/..." 40 minutes ago Up 3 minutes 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp kafkadocker_zookeeper_1
如果你运行下面的命令拉动图像后
docker history --no-trunc wurstmeister/zookeeper | grep EXPOSE ... EXPOSE 2181/tcp 2888/tcp 3888/tcp ... EXPOSE map[22/tcp:{}]
所以你看到用于构build这个镜像的Dockerfile已经提到端口2181,2888,3888,22应该被暴露。
docker ps
将显示图像元数据提到的端口以及您映射的端口。
比方说,我运行下面的命令
docker run --rm nginx
docker ps
将显示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e39964ca9bb8 nginx "nginx -g 'daemon ..." 2 seconds ago Up 1 second 80/tcp suspicious_jones
这告诉图像元数据指示端口80是容器内的程序可能正在监听的内容。 现在,如果我运行下面的相同的容器
docker run -p 8080:8080 --rm nginx
docker ps
将显示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93df718d1d86 nginx "nginx -g 'daemon ..." 26 seconds ago Up 25 seconds 80/tcp, 0.0.0.0:8080->8080/tcp confident_bassi
所以它是图像端口元数据和您实际映射的端口的组合。 当我们使用-P
标志时,这个元数据派上用场
docker run -P --rm nginx
现在docker ps
给我们
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf70d3212ee9 nginx "nginx -g 'daemon ..." 1 second ago Up 1 second 0.0.0.0:32768->80/tcp hungry_keller
正如您所看到的,映像元数据中提到的每个端口都会自动映射到主机上的一个可用端口
- Docker for SQL Server 2012容器支持
- Docker Volume指向Dockerfile中的主机目录
- 我该如何解决我的docker-compose.yml? – 预期<block end>,但find'<block mapping start>'
- mongod不停(docker debian:wheezy)
- 在kubernetes掌舵如何用新的configuration值来replace一个pod
- Docker / Boot2Docker / Fig + RabbitMQ主机问题; pika.exceptions.AMQPConnectionError:名称或服务未知
- 如何将地方图书馆纳入build设?
- Kubernetes卷装载path
- Docker删除容器错误