我有3个端口应该暴露在机器的接口上。Docker容器能做到这一点吗?
当前回答
Step1
在Dockerfile中,可以使用动词EXPOSE来公开多个端口。 如。
EXPOSE 3000 80 443 22
步骤2
然后,您希望基于上面的Dockerfile构建一个新映像。 如。
docker build -t foo:tag .
步骤3
然后使用-p将主机端口映射到容器端口,如Dockerfile的EXPOSE中所定义的那样。 如。
docker run -p 3001:3000 -p 23:22
如果你想公开一系列连续的端口,你可以像这样运行docker:
docker run -it -p 7100-7120:7100-7120/tcp
其他回答
为了只公开一个端口,你需要这样做:
docker run -p <host_port>:<container_port>
要公开多个端口,只需提供多个-p参数:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
如果你使用docker-compose.ymlfile:
services:
varnish:
ports:
- 80
- 6081
您还可以将主机/网口指定为host/ NETWORK_PORT:CONTAINER_PORT
varnish:
ports:
- 81:80
- 6081:6081
只有一个点需要添加。你可以选择在dockerfile和运行时指定一个端口范围:
在dockerfile:
EXPOSE 8888-8898
构建图像:
docker build -t <image_name>:<version> -f dockerfile .
运行映像时:
docker run -it -p 8888-8898:8888-8898 -v C:\x\x\x:/app <image_name>:<version>
Step1
在Dockerfile中,可以使用动词EXPOSE来公开多个端口。 如。
EXPOSE 3000 80 443 22
步骤2
然后,您希望基于上面的Dockerfile构建一个新映像。 如。
docker build -t foo:tag .
步骤3
然后使用-p将主机端口映射到容器端口,如Dockerfile的EXPOSE中所定义的那样。 如。
docker run -p 3001:3000 -p 23:22
如果你想公开一系列连续的端口,你可以像这样运行docker:
docker run -it -p 7100-7120:7100-7120/tcp
如果你从一个镜像创建一个容器,并且喜欢公开多个端口(而不是发布),你可以使用下面的命令:
docker create --name `container name` --expose 7000 --expose 7001 `image name`
现在,当您使用docker start命令启动这个容器时,上面配置的端口将会暴露出来。
推荐文章
- 如何从DockerFile运行docker实例?
- 我是否试图连接到启用TLS的没有TLS的守护进程?
- Docker -一种访问主机USB或串行设备的方法?
- Docker:无效引用格式
- 将AWS凭证传递给Docker容器的最佳方法是什么?
- 如何在docker-compose中设置主机名?
- 为什么Docker容器映像这么大?
- 如何在docker撰写版本3中指定内存和CPU限制
- Docker和安全密码
- 如何让Docker容器在系统引导时自动启动?
- 如何在Docker容器中用模式初始化MySQL数据库?
- PYTHONUNBUFFERED在docker文件中的用途是什么?
- 如何在Dockerfile CMD中使用变量?
- 将主机端口转发到docker容器
- “docker compose”与“docker-compose”的区别