Docker排坑日志二则 - Tinsley's blog

/ 0评 / 0

Docker容器无法联网

这个问题出现在搭建Docker版NextCloud私有云盘的时候.

创建启动容器一切顺利, docker ps -a看一下, 容器状态upup, 端口映射ok的, 来访问一下看... 嗯? 不通?

接下来就是枯燥的排查过程. 经过反复确认:

内部似乎没有问题, 所以是外部IP的配置问题?

打开谷歌, 搜索到了这个issue, 发现可以创建一个临时容器来查看Docker使用的外部IP:

docker run --rm byrnedo/alpine-curl http://httpbin.org/ip

然而... 这个url访问超时??? 在bash里面 curl http://httpbin.org/ip确认了一下, 接口是没有问题的.

那么, 有问题的一定是Docker本身了, 它可能压根儿没有连到互联网.

我的搜索关键字变成why my docker has no internet, 找到了这个stackoverflow问题, 并很顺利地在第二个回答中找到了解决办法, 简单且意想不到------那就是重启Docker服务...

sudo service docker restart

一直以来我都把下面这句话当成玩笑:

重启可以解决90%的问题

对不起, 是我不敬了😂


Version in "./docker-compose.yml" is unsupported.

当我准备好docker-compose配置文件, 准备docker-compose up的时候, 出现了如下的报错:

Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version.

docker-compose说我的配置文件版本不被支持, 而这个配置文件在其他机器上测试过没有问题, 所以应该是docker-compose本身的版本问题.

查了一下, docker-compose 旧版本有bug会导致 version: '3.1'的配置文件无法被识别. 我机器上安装的是v1.8.0, 配置文件是version: '3', 导致识别失败的应该是同一个bug. 这个bug在docker-compose (1.11.1)已经被修复了.

Bugfixes

Fixed a bug where the 3.1 file format was not being recognized as valid by the Compose parser

所以升级到较新(>=1.11.1)的版本, 应该是可以解决这个问题的.

更新步骤:

$ which docker-compose # 查看docker-compose二进制文件位置
/usr/bin/docker-compose

$ sudo rm /usr/bin/docker-compose # 删除旧文件

$ curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose # 下载新版

$ chmod +x /usr/bin/docker-compose # 增加执行权限

$ docker-compose --version # 确认新版本
docker-compose version 1.20.0

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注