前言:工作中经常遇到用户服务器安装Docker后有各种无法访问的问题,本文章介绍一个典型的问题,用户使用阿里云ECS服务器Docker中安装了数据库应用,服务启动正常,端口监听正常,外部检测该端口也是通畅的,但外部始终无法成功访问这个端口,数据库也有开启远程访问权限,容器端口端口映射也正常,Docker容器所有设置都检查了,没问题,用户反馈在其他云服务器提供商安装无问题,这下就犯难了,不知道如何入手检查这个问题
过程:在引导用户解决问题的过程中用户执行了ifconfig 命令,查看了容器的ip,发现容器默认的ip是172段,如图,而阿里云的内网ip也是172段,通过搜索资料发现也有用户遇到过类似问题。
原因:容器默认的ip为172.17.0.1 ,而阿里云的服务器内网ip一般也是172段开头,所以两者IP有冲突。
解决:知道原因了就方便解决了,将Docker容器的ip段修改一下,修改方法可参考如下命令:
1、安装docker后默认会生成 /etc/docker/daemon.json 将daemon.json文件复制备份
2、vi 编辑/etc/docker/daemon.json文件,写入如下代码保存,192.168.1.5/24是设置的容器ip段,也可更换为非172的其他ip段。cp /etc/docker/daemon.json /etc/docker/daemon.json_bak
该文件默认为空,若本身已经有内容,请不要删除,请查找bip对应值修改一下,或者单独添加到文件结尾。
3、重启容器服务{
"registry-mirrors": [
"https://docs.docker.com"
],
"bip": "192.168.1.5/24"
}
重启容器实例,将8b92e4b387ed更换为您的容器实例名或容器idservice docker restart
4、重启后在执行命令 ifconfig 即可看到容器的ip变成了192.168.1.5了,如图。 按照如上设置后在检测可以正常连接了.docker start 8b92e4b387ed
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
文章评论 本文章有个评论