docker 端口映射

当用docker启动容器时,使用 -p 可以指定容器占用的端口 例如:启动一个Tomcat 容器,将容器的8080端口指定到实体服务器的8080端口

docker run --name tomcat -p 8080:8080 -d tomcat

那么问题来了。我已经启动了一个容器,那怎么为这个已经存在了的容器换一个端口那。 为了更换端口,你得稍微费点事。

一 ,停止这个容器

docker stop tomcat

二,查看一下当前容器的ID

docker ps --all

得到如下结果

1
2
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                               NAMES
0b215ea2ecf5 wordpress "docker-entrypoint.s…" 29 hours ago Exited (0) 23 hours ago wordpress

第一列的0b215ea2ecf5就是这个容器的ID,当然这个ID是截断的前几位,完整的ID是很长的

三,进入这个容器的配置文件

docker的每个容器在实体机上都有一个对应的文件夹。存放这个容器的一些信息 如果不知道这个文件夹的位置,可以用

find / -name '*<容器ID>*'

搜索一下。

进入到这个文件夹后,可以看到一个叫 hostconfig.json的文件。这个文件试一下压缩过的json格式文件,看着挺乱。可以找个格式化工具格式化一下。 在这个文件中找一下形如下面的段落

1
2
3
4
5
6
7
8
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
]
},

其中这个 "HostPort": "80" 就是对应的实体主机的端口。修改这个端口为你想的号码就可以了。

本文总阅读量