如何在CentOS7上升级Docker(到1.10.0)?

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,build 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 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?

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

我有同样的问题,今天我终于成功地启动docker1.10。 我的问题是docker的起始命令。 似乎我用devicemapper存储驱动程序和docker 1.10驱动程序使用devicemapper是不一样的。

这是我试过的。

1.删​​除networking文件。

当我放弃升级docker1.10一次,降级到1.10时,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 

我的官方仓库完全一样。

载荷大小://github.com/docker/docker/blob/master/contrib/init/systemd/docker.service

应该是这样的;

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

这个命令对我不起作用。 所以我做了一个文件,在这里覆盖命令作为一个包装的conf文件;

 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图像。

我在这里看到另一个ExecStart行。

 vi /etc/systemd/system/docker.service.d/docker.conf [Service] ExecStart= ExecStart=docker daemon -D -s overlay 

虽然这工作,并使docker1.10开始,我的所有docker图像已经消失。 由于docker images没有返回,我非常恼火。 但是我在/var/lib/docker/devicemapper/仍然有很多真实的映像文件,所以我觉得这个命令会改变一个奇怪的目录。 然后我得到了答案,它是devicemapper

官方文件

你可以在这里看到细节。 我们可能需要了解这个守护进程。

docker1.10移植需要太多的时间

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

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

虽然这是一个简单的操作,但是如果您有大量的图像数据,那么计算文件的SHA256校验和可能会花费一些时间。 平均而言,您应该假设迁移者可以以100MB / s的速度处理数据。 在此期间,您的Docker守护进程将不会准备好响应请求。

请看这里 。