所以我有3个端口应该暴露给机器的接口。是否可以使用Docker容器执行此操作?
答案 0 :(得分:570)
要公开一个端口,这就是您需要做的事情:
docker run -p <host_port>:<container_port>
要公开多个端口,只需提供多个-p
参数:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2>
答案 1 :(得分:213)
在Dockerfile
中,您可以使用动词EXPOSE
来展示多个端口
e.g。
EXPOSE 3000 80 443 22
然后,您希望根据上述Dockerfile
制作新图像
e.g。
docker build -t foo:tag .
然后,您可以使用-p
将主机端口映射到容器端口,如上面EXPOSE
Dockerfile
中所定义。
e.g。
docker run -p 3001:3000 -p 23:22
如果您想公开一系列连续端口,可以像这样运行docker:
docker run -it -p 7100-7120:7100-7120/tcp
答案 2 :(得分:24)
如果您使用docker-compose.yml
文件:
services:
varnish:
ports:
- 80
- 6081
您还可以指定主机/网络端口
varnish:
ports:
- 80:80
- 6081:6081
答案 3 :(得分:0)
如果要通过图像创建容器,并且希望公开多个端口(不发布),则可以使用以下命令:
static void Stackoverflow(Args _args)
{
#AviFiles
SysOperationProgress progress = new SysOperationProgress();
int i, total;
;
progress.setCaption("Exports PDF");
progress.setAnimation(#AviUpdate);
total = 90000; //Your total of PDF documento to export
progress.setTotal(total);
for (i = 1; i <= total; i++) //Your loop to create PDF
{
//Your code to create PDF in folder
progress.setText(strfmt("PDF generation %1 of %2", i, total));
progress.setCount(i, 1);
//Your code to create PDF in folder END
}
}
现在,当您使用docker create --name `container name` --expose 7000 --expose 7001 `image name`
命令启动此容器时,上面配置的端口将公开。
答案 4 :(得分:-1)
以此为例:
docker create --name new_ubuntu -it -p 8080:8080 -p 15672:15672 -p 5432:5432 ubuntu:latest bash
查看您创建的内容(并复制其容器 ID xxxxx):
docker ps -a
现在写奇迹制造者的话(开始):
docker start xxxxx
祝你好运