如何在Fedora / CentOS上面升级Docker 1.6 
=============================================================================
Docker，一个流行的将软件打包的开源容器平台，已经有了新的1.6版，增加了许多新的特性。该版本主要更新了Docker Registry、Engine、 Swarm、 Compose 和 Machine等方面。这次发布旨在提升性能、改善开发者和系统管理员的体验。让我们来快速看看有哪些新特性吧。

**Docker Registry (2.0)**是一项推送Docker镜像用于存储和分享的服务，因为面临加载下的体验问题而经历了架构的改变。它仍然向后兼容。Docker Registry的编写语言现在从Python改为Google的Go语言了，以提升性能。与Docker Engine 1.6结合后，拉取镜像的能力更快了。早先的镜像是队列式输送的，而现在是并行的啦。

**Docker Engine (1.6)**相比之前的版本有很大的提高。目前支持容器与镜像的标签。通过标签，你可以附加用户自定义的元数据到镜像和容器上，而镜像和容器反过来可以被其他工具使用。标签对正在运行的应用是不可见的，可以用来加速搜索容器和镜像。

Windows版本的Docker客户端可以连接到远程的运行在linux上的Docker Engine。

Docker目前支持日志驱动API，这允许我们发送容器日志给系统如Syslog，或者第三方。这将会使得系统管理员受益。

**Swarm (0.2)**是一个Docker集群工具，可以将一个Docker主机池转换为一个虚拟主机。在新特性里，容器甚至被放在了可用的节点上。通过添加更多的Docker命令，努力支持完整的Docker API。将来，使用第三方驱动来集群会成为可能。

**Compose (1.2)** 是一个Docker里定义和运行复杂应用的工具, 也得到了升级。在新版本里，可以创建多个子文件，而不是用一个没有结构的文件描述一个多容器应用。

通过**Machine (0.2)**，我们可以很容易地在本地计算机、云和数据中心上搭建Docker主机。新的发布版本为开发者提供了一个相对干净地驱动界面来编写驱动。Machine集中控制供给，而不是每个独立的驱动。增加了新的命令，可以用来生成主机的TLS证书，以提高安全性。

### 在Fedora / CentOS 上的升级指导 ###

在这一部分里，我们将会学习如何在Fedora和CentOS上升级已有的docker到最新版本。请注意，目前的Docker仅运行在64位的架构上，Fedora和CentOS都源于RedHat，命令的使用是差不多相同的，除了在Fedora20和CentOS6.5里Docker包被叫做“docker-io”。

如果你系统之前没有安装Docker，使用下面命令安装：

    "yum install docker-io"  –  on Fedora20 / CentOS6.5

    "yum install docker"  - on Fedora21 / CentOS7

在升级之前，备份一下docker镜像和容器卷是个不错的主意。

参考[“将文件系统打成 tar 包”][1]与[“卷备份、恢复或迁移”][2]，获取更多信息。

目前，测试系统安装了Docker1.5。样例输出显示是来自一个Fedora20的系统。

验证当前系统安装的Docker版本

    [root@TestNode1 ~]#sudo docker -v

    Docker version 1.5.0, build a8a31ef/1.5.0

如果Docker正在运行，先停掉。

    [root@TestNode1 ~]# sudo systemctl stop docker

使用yum update升级到最新版，但是写这篇文章的时候，仓库并不是最新版本(1.6)，因此你需要使用二进制的升级方法。

    [root@TestNode1 ~]#sudo yum -y update docker-io

    No packages marked for update

    [root@TestNode1 ~]#sudo wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O /usr/bin/docker

    --2015-04-19 13:40:48-- https://get.docker.com/builds/Linux/x86_64/docker-latest

    Resolving get.docker.com (get.docker.com)... 162.242.195.82

    Connecting to get.docker.com (get.docker.com)|162.242.195.82|:443... connected.

    HTTP request sent, awaiting response... 200 OK

    Length: 15443598 (15M) [binary/octet-stream]

    Saving to: /usr/bin/docker

    100%[======================================>] 15,443,598 8.72MB/s in 1.7s

    2015-04-19 13:40:50 (8.72 MB/s) - /usr/bin/docker saved

检查更新后的版本

    [root@TestNode1 ~]#sudo docker -v

    Docker version 1.6.0, build 4749651

重启docker服务

    [root@TestNode1 ~]# sudo systemctl start docker

确认Docker在运行

    [root@TestNode1 ~]# docker images

    REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

    fedora latest 834629358fe2 3 months ago 241.3 MB

    [root@TestNode1 ~]# docker run fedora /bin/echo Hello World

    Hello World

CentOS安装时需要**注意**，在CentOS上安装完Docker后，当你试图启动Docker服务的时候，你可能会得到错误的信息，如下所示：

    docker.service - Docker Application Container Engine

    Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled)

    Active: failed (Result: exit-code) since Mon 2015-04-20 03:24:24 EDT; 6h ago

    Docs: http://docs.docker.com

    Process: 21069 ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=127)

    Main PID: 21069 (code=exited, status=127)

    Apr 20 03:24:24 centos7 systemd[1]: Starting Docker Application Container E.....

    Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"

    Apr 20 03:24:24 centos7 docker[21069]: time="2015-04-20T03:24:24-04:00" lev...)"

    Apr 20 03:24:24 centos7 docker[21069]: /usr/bin/docker: relocation error: /...ce

    Apr 20 03:24:24 centos7 systemd[1]: docker.service: main process exited, co.../a

    Apr 20 03:24:24 centos7 systemd[1]: Failed to start Docker Application Cont...e.

    Apr 20 03:24:24 centos7 systemd[1]: Unit docker.service entered failed state.

这是一个已知的bug（[https://bugzilla.redhat.com/show_bug.cgi?id=1207839][3]），需要将设备映射升级到最新。

    [root@centos7 ~]# rpm -qa device-mapper

    device-mapper-1.02.84-14.el7.x86_64

    [root@centos7 ~]# yum update device-mapper

    [root@centos7 ~]# rpm -qa device-mapper

    device-mapper-1.02.93-3.el7.x86_64

    [root@centos7 ~]# systemctl start docker

### 总结 ###

尽管docker技术出现时间不长，但很快就变得非常流行了。它使得开发者的生活变得轻松，运维团队可以快速独立地创建和部署应用。通过该公司的发布，Docker的快速更新，产品质量的提升，满足用户需求，未来对于Docker来说一片光明。

--------------------------------------------------------------------------------

via: http://linoxide.com/linux-how-to/docker-1-6-features-upgrade-fedora-centos/

作者：[B N Poornima][a]
译者：[wi-cuckoo](https://github.com/wi-cuckoo)
校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出

[a]:http://linoxide.com/author/bnpoornima/
[1]:http://docs.docker.com/reference/commandline/cli/#export
[2]:http://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes
[3]:https://bugzilla.redhat.com/show_bug.cgi?id=1207839
[4]:
[5]:
[6]:
[7]:
[8]:
[9]:
[10]:
[11]:
[12]:
[13]:
[14]:
[15]:
[16]:
[17]:
[18]:
[19]:
[20]:
