docker容器运行后如何端口映射

docker容器运行后如何添加端口映射,将内部端口映射到主机?

方法一:删除原镜像,重新构建镜像,麻烦,应用需要重新部署

方法二:通过commit构建新的镜像后然后重新运行容器,添加端口,数据可以保留,但是会造成镜像臃肿,费时

方法三(推荐):通过firewalld端口转发来实现端口映射:无需重新构建镜像,无需重新部署应用,保持原容器不变,操作方法如下:

首先开启ip地址伪装firewall-cmd  --zone=external  --add-masquerade
添加转发规则:firewall-cmd --add-forward-port=port=26:proto=tcp:toaddr=172.18.0.2:toport=22  --permanent

上述命令表示将本机的26端口转发到docker容器的22端口(本例子中的docker容器是一个centos系统,172.18.0.2表示容器ip,建议设置成固定Ip,可以保证转发的准确性,因为docker容器的启动先后顺序决定了内部容器的ip地址)
其他端口的转发也按照这个执行即可

标签