Docker 容器创建后添加端口映射

还有一种通过修改iptables的方法,但是经过尝试发现修改未果,就不做介绍。

通过修改容器配置文件添加端口映射

docker容器被创建后配置文件会被保存在一个文件夹,解决方法就是将配置文件中添加映射。

  1. 停止docker容器(docker stop 容器ID(运行中的容器ID 用docker ps查询))这里以da57c4d92d0d为例
docker stop da57c4d92d0d
  1. 停止docker服务
systemctl stop docker
  1. 获取root权限,我的环境中不获取root权限无法进入docker配置文件的文件夹
sudo -i
  1. docker的配置文件在/var/lib/docker/containers/ 下,文件名开头对应着容器ID
cd /var/lib/docker/containers/da57c4d92d0d*
  1. 修改配置文件
    这里需要hostconfig.json 以及config.v2.json
    若需要将容器的5222端口映射到宿主服务器的22端口
  • 在hostconfig.json添加
"PortBindings": {
    "21/tcp": [
      {
        "HostIp": "",
        "HostPort": "5222"
      }
    ],
}
  • 在config.v2.json中需要将新加的端口添加到ExposedPorts
"ExposedPorts": {
  "21/tcp": {}
}
  1. 修改完成后启动docker
systemctl start docker
  1. 启动容器,并查看容器端口
docker start da57c4d92d0d
docker port da57c4d92d0d