在最近使用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文件,在进行重启就生效啦

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐