相信大家都知道:docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是:保存镜像,再创建一个新的容器,在创建时指定新的端口映射。但这样太麻烦了,现在有新方案来解决掉这个问题,具体操作如下:
1、查看容器
docker ps -a
2、停止容器
docker stop f503
3、停止docker服务
systemctl stop docker
4、修改文件
vim /var/lib/docker/containers/{container_id}/hostconfig.json
找到这个"PortBindings"的值,在这个json集合里边追加新端口:
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"8888/tcp": [
{
"HostIp": "",
"HostPort": "8888"
}
]
}
5、启动docker服务
systemctl start docker
6、启动容器
docker start f503
特别注意: 第4步修改文件要注意,如果config.v2.json里面也记录了端口,也要修改config.v2.json文件里边。
修改值 : config->ExposedPorts 和 networsettings->Ports , 参考下图:
"Config": {
....
"ExposedPorts": {
"80/tcp": {},
"8888/tcp": {}
},
....
},
"NetworkSettings": {
....
"Ports": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],