今天在服务器上安装ASF的时候,出现内网使用127.0.0.1:1242能够正常访问使用外网ip却不行,最终发现是我之前创建容器的时候映射的1242端口是指定的ipv4ipv6的回环地址,其实直接使用-p 1242:1242就可以直接映射所有ip端口,我偏偏去指定了ip,简直是自己给自己挖坑。

修改映射端口

切换到该路径/var/lib/docker/containers
该路径下的文件名是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看
通过CONTAINER ID和开头对应可以看出来
打开你要修改容器对应的目录下的hostconfig.json文件。
修改之前先暂停docker,不然修改之后重启服务会被还原的。

systemctl stop docker

PortBindings 这个对象下就是我之前设置的端口映射信息了
结构是PortBindings->容器端口->宿主机ip + 端口信息

"PortBindings": {
    "1242/tcp": [{
        "HostIp": "127.0.0.1",
        "HostPort": "1242"
    }, {
        "HostIp": "::1",
        "HostPort": "1242"
    }]
}

我还是保留之前指定ip的形式,添加了一个服务器外网ip就好了

修改好之后需要重启整个docker服务

systemctl restart docker

2 条评论

  1. Escher
    2020-05-06 17:34
    回复

    Docker这个玩意就一神器

    1. Nroy
      2020-05-09 13:48
      回复

      是的,部署超级方便

添加新评论