自从升级到Fedora 27之后,突然发现dnf upgrade提示使用docker-common替换docker。
但是升级替换之后,却不能执行docker指令,显示缺少/usr/bin/docker-latest。从软件仓库来看,确实有一个docker-latest软件包,所以就先尝试安装
Copy dnf install docker-latest 不过,安装以后,虽然可以使用docker ps指令,但是显示尚未启动服务。只时,此时并没有systemctl可以管控的docker服务。
从Docker官方网站来看,当前Docker已经将软件分裂成社区版本和企业版本,并且在Fedora平台不再提供企业版本,只能安装部署社区版本。由于Fedora 27刚刚发布,当前Docker并没有释出针对Fedora 27的社区版本,导致现在存在的困境。
参考 Please provide repo for docker-ce on Fedora 27 #164arrow-up-right 当前可以暂时使用 Fedora 26版本的 docker-ce 运行于 Fedora 27,即下载 https://download.docker.com/linux/fedora/docker-ce.repoarrow-up-right ,然后通过以下命令替换$release变量
Copy sed -i ' s/\$releasever/26/g ' /etc/yum.repos.d/docker-ce.repo 等以后提供了Fedora 27版本之后,在使用以下命令恢复
Copy sed -i ' s/26/\$releasever/g ' /etc/yum.repos.d/docker-ce.repo
Copy dnf remove docker \
docker-common \
container-selinux \
docker-selinux \
docker-engine 注意:当前参考前述先替换$release成固定数值26
如果需要体验最新的实验特性,可以编辑/etc/docker/daemon.json设置如下
Error response from daemon: Unknown runtime specified oci(实际解决是重新安装Fedora 27发行版提供的Docker)
以往使用docker部属的的容器,在安装了docker-ce之后,启动出现错误提示
OCI即Open Container Initiative,请参考
Demystifying the Open Container Initiative (OCI) Specificationsarrow-up-right
这个问题在Fix docker Unknown runtime specified oci errorarrow-up-right 提供了一个解决方法
实际上可以通过docker inspect dev5来找到这个dev5容器的详细配置信息,其中有一条就是:
进入目录/var/lib/docker/containers/<ID>
检查hostconfig.json,删除掉Runtime属性的oci值
不过,实际上上述解决方法只是绕开功能问题,参考dockerd(stable version)参数arrow-up-right 显示默认容器的运行参数是runc,需要修改-default-runtime string Default OCI runtime for containers (default "runc")
通过ps aux | grep docker检查发现,除了/usr/bin/dockerd进程外,还有一个docker-containerd --config /var/run/docker/containerd/containerd.toml进程。
检查/var/run/docker/containerd/containerd.toml配置文件可以看到
有关runtime默认使用了docker-runc插件
Error response from daemon: secret store is not initialized
解决了上述Unknown runtime specified oci,再次启动dev5容器,又遇到新的报错
经过google,在dockeredarrow-up-right 中找到了提示:
Edge only: This is the dockerd configuration reference for Docker CE Edge versions. Some of these options may not be available to Docker CE stable or Docker EE. You can view the stable version of this dockerd configuration reference or learn about Docker CE Edge.
也就是说,默认的stable版本docker ce不能够支持一些特性,需要使用edge版本。
所以修改/etc/yum.repos.d/docker-ce.repo,关闭stable版本仓库,启用edge版本仓库,重新安装docker-ce
解决不了兼容以往docker容器的方法,所以还是卸载了docker-ce,重新安装Fedora 27提供的docker版本
这个发行版安装的docker则可以通过如下命令启动