0%

Docker给正在运行的容器映射宿主机端口

方式 1 :iptables 转发

获得容器 IP

1
docker inspect 'container_name' | grep "\"IPAddress\": \""|head -1 | cut -d "\"" -f 4

iptables 转发端口

将容器的 8000 端口映射到 docker 主机的 8001 端口

1
iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.2:8000

一步搞定

1
iptables -t nat -A  DOCKER -p tcp --dport 8001 -j DNAT --to-destination $(docker inspect 'container_name' | grep "\"IPAddress\": \""|head -1 | cut -d "\"" -f 4):8000

方式 2 : 重新 build 镜像, EXPOSE 端口,重新运行容器

新建一个空目录,编写 Dockerfile

1
2
3
mkdir image_name_version2
cd image_name_version2
vim Dockerfile

Dockerfile 内容如下:

1
2
3
FROM image_name:version

EXPOSE 8000

根据新的 Dockerfile 构建镜像

1
docker build -t image_name:version2 .

基于新的镜像运行新的容器

1
docker run -p 8001:8000 ...