我不确定是否理解有误,但似乎只能通过从镜像创建新的容器来设置端口映射。是否存在一种方式可以将端口映射分配给现有的Docker容器?
我不确定是否理解有误,但似乎只能通过从镜像创建新的容器来设置端口映射。是否存在一种方式可以将端口映射分配给现有的Docker容器?
/var/lib/docker/containers/${container_id}
目录并编辑 hostconfig.json
文件。PortBindings.HostPort
。我有一个容器的情况:
127.0.0.1:8050->8000
我用一条iptables规则解决了这个问题:
iptables -t nat -I DOCKER 1 -p tcp --dport ${HOST_PORT} -j DNAT --to-destination ${CONTAINER_IP}:${CONTAINER_PORT}
HOST_PORT
为8050,CONTAINER_PORT
为8000。要找到CONTAINER_IP
,请使用docker inspect
命令。iptables -t nat -D DOCKER 1
对于Windows和Mac用户,还有另一种非常简单友好的方法来更改映射端口:
下载Kitematic
进入容器的设置页面,在“端口”选项卡上,您可以直接修改发布的端口。
重新启动容器
docker run -p 8080:8080 <Image ID>
要获取图像ID,您可以使用以下代码:
docker ps
run
会创建一个新的容器。 - Alexis Wilke