所以我有 3 个端口应该暴露给机器的接口。是否可以使用 Docker 容器来执行此操作?
问问题
409887 次
6 回答
950
要仅公开一个端口,您需要执行以下操作:
docker run -p <host_port>:<container_port>
要公开多个端口,只需提供多个-p
参数:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
于 2013-12-31T03:57:54.440 回答
395
步骤1
在您的Dockerfile
中,您可以使用动词EXPOSE
来公开多个端口。
例如
EXPOSE 3000 80 443 22
第2步
然后,您想基于上述构建一个新图像Dockerfile
。
例如
docker build -t foo:tag .
第三步
然后您可以使用 将-p
主机端口映射到容器端口,如上面定义EXPOSE
的Dockerfile
.
例如
docker run -p 3001:3000 -p 23:22
如果您想公开一系列连续端口,您可以像这样运行 docker:
docker run -it -p 7100-7120:7100-7120/tcp
于 2015-09-27T09:16:06.047 回答
37
如果您使用docker-compose.yml
文件:
services:
varnish:
ports:
- 80
- 6081
您还可以将主机/网络端口指定为HOST/NETWORK_PORT:CONTAINER_PORT
varnish:
ports:
- 81:80
- 6081:6081
于 2017-03-03T04:20:00.253 回答
1
如果您要从映像创建容器并希望公开多个端口(而不是发布),则可以使用以下命令:
docker create --name `container name` --expose 7000 --expose 7001 `image name`
现在,当您使用docker start
命令启动此容器时,上面配置的端口将被公开。
于 2020-01-22T15:03:09.990 回答
0
只有一点要补充。您可以选择指定要在 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>
于 2022-02-23T11:44:10.930 回答
0
以此为例:
docker create --name new_ubuntu -it -p 8080:8080 -p 15672:15672 -p 5432:5432 ubuntu:latest bash
查看您创建的内容(并复制其 CONTAINER ID xxxxx):
docker ps -a
现在写下创造奇迹的词(开始):
docker start xxxxx
祝你好运
于 2021-02-09T10:54:39.290 回答