在最近使用docker的时候,搭建了rabbitmq,我使用了manager的web'管理界面的image镜像,在启动container的时候,由于端口
映射比较多,结果遗漏了rabbitmq的服务映射端口,导致,java client 代码发送和拉取消息失败,
简单粗暴点的方法就是把现在的容器给 直接 docker container rm [id] 给删除掉,然后在重新通过image 生成一个
但是如果以后遗漏了都用这种方式,那么就很尴尬,尤其到了正式生成环境,这是绝对不允许的。因此我们就可以通过修改
container的配置文件 hostconfig.json 来达到目的,网上资料也有说还要修改 config.v2.json该配置文件,我这里没有修改
具体修改步骤如下
1、使用 docker ps -a 命令找到要修改容器的 CONTAINER ID
2、运行 docker inspect 【CONTAINER ID】 | grep Id 命令 //我这里没有显示到需要的目录id
3、执行 cd /var/lib/docker/containers 命令进入找到与 Id 相同的目录,如下图
4、停止 docker 引擎服务,systemctl stop docker 或者 service docker stop
5、进入对应 Id 所在目录后,如上图所示,修改 hostconfig.json 【和 config.v2.json,此处我没有修改】 ---- vi hostconfig.json
修改PortBindings下的端口映射,下面标红的地方就是新添加的
{
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "journald",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"15672/tcp": [
{
"HostIp": "",
"HostPort": "15672"
}
],
"5672/tcp": [
{
"HostIp": "",
"HostPort": "5672"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"Cgroup": "",
"Links": [],
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "docker-runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
}
注意:此处编译完成后,我保存退出,在启动docker和容器的时候,却发现该文件又被还原啦,后来我就把hostconfig.json拷贝
出来然后把json在外部格式化并进行修改后,在创建一个hostconfig.json文件,在进行重启就生效啦