这两天在学习Docker的基本使用,然鹅,好巧不巧遇到了坑。所使用的系统为openSUSE Leap 42.2版本,出现问题时所使用的Docker为系统自带源里面打包好的。要知道,往往是开发团队先打包、做测试、修Bug,然后提交给openSUSE这边,openSUSE这边的负责人员再测试之后推送到官方源,总的来说还是非常可靠的。

首先是安装的时候让我心头一震--报警告缺少container依赖包,想想应该官方包这么走一道应该没问题才对啊,直接选择了忽略依赖直接安装。本来照着官方文档进行还挺顺畅的,跑完hello-world的时候心里还是美滋滋的。到后面编辑完Dockerfile,build完毕,跑例程的时候却出错了。

$ docker run -p 8000:80 myhello

报错信息如下:

docker: Error response from daemon: driver failed programming external connectivity
on endpoint nostalgic_swanson : exec: "docker-proxy": executable file not found in $PATH.

似乎就是map端口的时候发现少了这个执行文件,简直一脸懵逼,难道需要手动加个链接,可想想也不可能这样啊...后面上网搜索了一下,结果发现是官方源的问题,基本上openSUSE用户遇到的各种问题,切换过去就都搞定了...比如如下这种问题:

$ docker-runc not installed on system

解决方式也很简单粗暴,添加Docker那边openSUSE平台的测试源,重新安装、切换Vender就可以了。

$ sudo zypper rm docker
$ sudo zypper ar https://download.opensuse.org/repositories/Virtualization:/containers/openSUSE_Leap_42.2 For-Docker
$ sudo zypper update
$ sudo zypper in docker

感觉好多人遇到这个问题...不过都是8月份的事了,不知道为啥到现在虽然版本跟着上去了,还是存在问题。

https://github.com/moby/moby/issues/26022

https://github.com/moby/moby/issues/26026

对于Docker我也是刚刚开始了解,记录一下,希望能帮助到和我一样的学习者,减少踩坑时间。