docker run可以指定端口映射,但是容器一旦生成,就沒有一個命令可以直接修改。通常間接的辦法是,保存鏡像,再創建一個新的容器,在創建時指定新的端口映射。
但這樣太麻煩了。現在有新方案來解決掉:
操作步驟:
1 查看容器
docker ps -a
2 停止容器
docker stop f503
3 停止docker服務
systemctl stop docker
4 修改文件
vi /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里面也記錄了端口,也要修改,
原帖地址 : https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container
config.v2.json文件里邊
修改值 : config->ExposedPorts 和 networsettings->Ports , 參看下圖
"Config": { .... "ExposedPorts": { "80/tcp": {}, "8888/tcp": {} }, .... }, "NetworkSettings": { .... "Ports": { "80/tcp": [ { "HostIp": "", "HostPort": "80" } ],