Docker修改容器端口

Docker修改容器端口

Scroll Down

Docker创建容器时,指定端口

docker run -d -p 80:80 image

对于未创建的容器可以通过创建容器时制定端口;实际情况往往是需要修改已经创建的容器的端口,已经创建的容器不能通过命令修改端口。

可以通过以下三种方式进行端口修改。

方式一:镜像方式

通过当前容器保存创建新的镜像,再在创建新的容器时制定端口。

  1. 使用docker commit创建新的镜像
# 简洁的命令
docker commit CONTAINER_ID my-image
# 指定更多信息
docker commit -m='A new image' --author='max' CONTAINER_ID my-image

以上命令中,用-m指定创建的镜像的提交信息。--author指定镜像作者,后面包括容器ID、目标镜像仓库、镜像名等。

  1. 使用docker inspect查看镜像详情
docker inspect my-image
  1. 创建容器,指定端口
docker run -d -p 8080:8080 my-image

方式二:修改配置

  1. 停止容器
docker stop CONTAINER_ID
  1. 停止docker服务
service docker stop
  1. 修改容器的hostconfig.json文件和config.v2.json文件
# 进入容器配置目录
cd /var/lib/docker/containers/{container_id}
# 修改hostconfig.json
vim hostconfig.json
	...
	"PortBindings": {
        "8080/tcp": [
            {
                "HostIp": "", 
                "HostPort": "8080"
            }
        ]
    }
	...
# 修改config.v2.json(作用未知)
vim config.v2.json
	...
	"ExposedPorts": {
    	"8090/tcp": { }
    }
    ...
  1. 启动docker服务
service docker start
  1. 启动容器
docker start CONTAINER_ID

方式三:宿主映射

  1. 获取容器IP地址
# 通过CONTAINER_ID获取IP
docker inspect CONTAINER_ID| grep IPAddress
# 通过CONTAINER_NAME获取IP
docker inspect CONTAINER_NAME| grep IPAddress
  1. iptable转发端口
#将宿主机的80端口映射到容器的8080端口
iptables -t nat -A  DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.17.0.3:8080