docker 的默认存储驱动程序可能已改变。

docker 的默认存储驱动程序可能已改变。

Docker 1.8.2-10.el7.centos 已安装并能够在 CentOS7 上运行。

为了升级docker这个帖子已读取并发出以下命令:

  • curl -L https://get.docker.com/builds/Linux/x86_64/docker-latest > /usr/bin/docker; chmod +x /usr/bin/docker
  • curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/init/systemd/docker.service > /usr/lib/systemd/system/docker.service
  • curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/init/systemd/docker.socket > /usr/lib/systemd/system/docker.socket

问题

当docker启动时:

systemctl start docker

它似乎挂了并且 /var/log/messages 表明:

Feb 11 00:22:01 localhost systemd: Device dev-disk-by\x2duuid-f00f4f0a\x2dba57\x2d468b\x2dba82\x2d72f1bb087bbb.device appeared twice with different sysfs paths /sys/devices/virtual/block/loop0 and /sys/devices/virtual/block/dm-6
Feb 11 00:22:05 localhost docker: time="2016-02-11T00:22:05.977110830+01:00" level=info msg="calculated checksum for layer 26de6fe292b2275378ce421742105813ee98fb49a5e0e45c1fd89e20eedc2c31: sha256:0c42efc496d9944258fb38ccfa64f53c32433a24daa3ad64144e48c5deb1c78c"
Feb 11 00:22:06 localhost kernel: EXT4-fs (dm-8): mounted filesystem with ordered data mode. Opts: (null)
Feb 11 00:22:06 localhost systemd-udevd: conflicting device node '/dev/mapper/docker-253:0-68595821-51009a2811797c49222fd5f9cb9e38fbe4fca9cf2a7fcfb1151d34c0b545a42a' found, link to '/dev/dm-8' will not be created
Feb 11 00:22:06 localhost systemd: Device dev-disk-by\x2duuid-f00f4f0a\x2dba57\x2d468b\x2dba82\x2d72f1bb087bbb.device appeared twice with different sysfs paths /sys/devices/virtual/block/loop0 and /sys/devices/virtual/block/dm-8

讨论

  1. 奇怪的是二进制文件已经升级:

    [root@localhost]# docker -v Docker 版本 1.10.0,内部版本 590d5108

但服务无法启动。

  1. 虽然1.10.0在CentOS7上无法启动,但是docker 1.9.0却可以启动:curl -L https://get.docker.com/builds/Linux/x86_64/docker-1.9.0 > /usr/bin/docker; chmod +x /usr/bin/docker

问题

如何在 CentOS7 上将 Docker 升级到 1.10.0?

答案1

docker 的默认存储驱动程序可能已改变。

我遇到了同样的问题,今天终于成功启动了docker 1.10。我的问题是docker的启动命令。看来我使用了带devicemapper存储驱动程序的docker,而docker 1.10驱动程序不一样。

这是我尝试过的。

1.删​​除网络文件。

当我放弃升级 docker 1.10 并将其从 1.10 降级到 1.9 时,1.9 无法启动。在我删除这些文件后,它启动了。这可能不会影响您的问题,但我决定从现在开始在升级 docker 之前删除它们。

mkdir /var-lib-docker-network-files  
mv /var/lib/docker/network/files/* /var-lib-docker-network-files

2. 将其覆盖ExecStart为您的自定义命令。

您可以在这里看到默认的启动命令;

vi /lib/systemd/system/docker.service 

我的和官方存储库完全相同。

ttps://github.com/docker/docker/blob/master/contrib/init/systemd/docker.service

应该是这样的;

ExecStart=/usr/bin/docker daemon -H fd://

这个命令对我不起作用。所以我创建了一个文件,它覆盖了该命令,作为此处的包装配置文件;

vi /etc/systemd/system/docker.service.d/docker.conf 

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -s devicemapper -H fd://

3. 重新加载并启动

确保在启动 docker 之前重新加载 systemd。

systemctl daemon-reload
service docker start

仅供参考,此命令将删除所有 docker 镜像。

我在这里

vi /etc/systemd/system/docker.service.d/docker.conf 

[Service]
ExecStart=
ExecStart=docker daemon -D -s overlay

虽然这个命令成功了,docker 1.10 也启动了,但我的所有 docker 镜像都消失了。我很恼火,因为docker images什么都没有返回。但我里面还有很多真正的镜像文件,/var/lib/docker/devicemapper/所以我认为这个命令引用了一个奇怪的目录。然后我得到了答案,它是devicemapper

官方文件

您可以查看详细信息这里。我们可能要了解一下守护进程。

答案2

docker 1.10 迁移需要太多时间

如果您重新启动后可以等待一天,您的 docker 1.10 将会启动。

首次启动 Docker Engine 1.10 时,所有当前图像、标签和容器都会自动迁移到新基础。在加载容器之前,守护进程将计算当前数据所需的所有校验和,完成后,所有图像和标签都将具有全新的安全 ID。

虽然这是一个简单的操作,但如果您有大量的图像数据,则计算文件的 SHA256 校验和可能需要一些时间。平均而言,您应该假设迁移器可以以 100MB/s 的速度处理数据。在此期间,您的 Docker 守护程序将无法响应请求。

请参见这里

相关内容