欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux服务器上升级Docker的教程

程序员文章站 2022-11-28 12:48:00
这篇文章主要介绍了在Linux服务器上升级Docker的教程,文中给出的示例基于Fedora/CentOS的redhat系系统,需要的朋友可以参考下... 15-05-27...

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 包”与“卷备份、恢复或迁移”,获取更多信息。

目前,测试系统安装了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),需要将设备映射升级到最新。

   

复制代码
代码如下:
[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来说一片光明。