如何在Fedora/CentOS上升级Docker
Docker是开发,运送和运行应用程序的开源平台。
Docker v17. 12是撰写本文的最新稳定版本。
它提供了在一个名为容器的完全隔离的环境中打包和运行应用程序的能力。
我们可以在给定的主机上同时运行许多容器。
容器轻量级快,因为它们不需要虚拟机管理程序,而是直接在主机内核内运行。
Docker架构
Docker是客户端 - 服务器应用程序,其中客户端和守护程序都可以在同一系统上运行,或者我们可以使用远程Docker守护程序连接Docker客户端。
Docker客户端和守护程序通过套接字或者RESTful API通信(代表状态传输,它是一个无状态传输,它通过包含包含和描述所需内容的XML文件的网页HTTP。
Docker的主要组件是
- Docker守护进程:Docker守护程序(Dockerd)侦听Docker API请求,并管理Docker对象,如图像,容器,网络和卷。守护程序还可以与其他守护进程通信以管理Docker服务。
- "Docker客户端":Docker客户端(Docker)是Docker用户与Docker互动的主要方式。当我们使用Docker Run等命令时,Docker Build等客户端将这些命令发送到Docker守护程序(Dockerd),该命令将它们输出。 Docker命令使用Docker API。它可以与多个守护进程进行通信。
Docker注册表(2.4.1)
:Docker注册表存储Docker镜像。 Docker Hub和Docker Cloud是任何人都可以使用的公共登记处。默认情况下,Docker配置为在Docker Hub上查找图像。我们甚至可以为我们的图像设置自己的私有登记册。
在本文中,我将解释如何将Docker升级到CentOS 7和Fedora 27上的最新可用版本。
准备工作
为了安装Docker CE版本,我们需要维护版本的CentOS 7.必须启用CentOS-Extras存储库。
默认情况下启用此存储库,但如果已禁用它,则需要重新启用它。
在CentOS 7.4上升级Docker
对于升级Docker,建议安装Docker Community Edition(Docker CE),这将使用特定工作负载所需的支持和保证安装,升级和维护Docker。
推荐overlay2存储驱动器。overlay2
是Docker CE的默认选择。
存储驱动程序控制如何在Docker主机上存储和管理图像和容器。
Docker支持几个不同的存储驱动程序。
"DeviceMapper"是我们的下一个选择,但它需要"直接LVM"生产环境,以实现更好的性能。
让我们从升级旧Docker版本的步骤开始。
- 卸载旧Docker版本
Docker和Docker-Engine软件包被称为旧包。
如果我们正在运行这些旧版本,可以先卸载它们以进一步继续。
运行此命令以从服务器中删除所有Docker痕迹。
#yum remove docker docker-common docker-selinux docker-engine
偶数,这些软件包从服务器中删除,我们所需的Docker内容包括图像,容器,卷和网络,保留在/var/lib/docker /
文件夹中。
- 安装docker ce.
我们可以首先设置Docker存储库并使用它安装它们。
这将使安装和升级过程更容易使用相同的存储库。
要设置我们的存储库,我们需要Yum-Utils包提供的Yum-config-manager实用程序。
并且如前所述,Docker Ce更喜欢存储驱动程序,在这里我们使用devicemapper
。
因此,对于此存储驱动程序,我们需要此设置为此device-mapper-persistent-data和lvm2软件包
。
我们可以使用此命令安装用于设置存储库的所有这些预先列表。
#yum install -y yum-utils device-mapper-persistent-data lvm2
接下来,我们可以使用以下命令启用稳定的Docker存储库。
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # yum install docker-ce Loaded plugins: fastestmirror docker-ce-stable | 2.9 kB 00:00:00 Loading mirror speeds from cached hostfile * base: mirrors.coreix.net * extras: repo.uk.bigstepcloud.com * updates: mirror.sov.uk.goscomb.net Resolving Dependencies --> Running transaction check ---> Package docker-ce.x86_64 0:17.12.0.ce-1.el7.centos will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================================================ Installing: docker-ce x86_64 17.12.0.ce-1.el7.centos docker-ce-stable 30 M Transaction Summary ============================================================================================================================================================================================================ Install 1 Package
此步骤是可选的:
EDGE和测试存储库也包含在此Repo文件中,默认情况下禁用。
如果我们希望我们可以启用这些repo文件以及稳定的Repo,并安装可用的边缘或者测试版本。
这可以通过在下面发出以下命令来完成:
#yum-config-manager --enable docker-ce-edge #yum-config-manager --enable docker-ce-test
启用这些repos后,install命令将从边缘repo推送安装。
# yum install docker-ce Dependencies Resolved ============================================================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================================================ Installing: docker-ce x86_64 18.01.0.ce-1.el7.centos docker-ce-edge 33 M Installing for dependencies: libtool-ltdl x86_64 2.4.2-22.el7_3 base 49 k Transaction Summary ============================================================================================================================================================================================================ Install 1 Package (+1 Dependent package)
因此,如果我们需要最新的稳定版本,则可以保留这些边缘并禁用测试Repos。
我们可以使用"yum-config-manager""命令与"--disable"标志来禁用这些repos。
有时,在服务器oper中仍然可以存在一些旧的odcker组件的旧Docker组件。
在步骤1.在安装期间,如果有任何旧的Docker版本,则会报告如下所示:
Transaction check error: file /usr/bin/docker from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd-shim from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/dockerd from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
我使用yum remove命令手动删除这些包,以便成功使用安装如下所示:
# yum remove docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 Dependencies Resolved ============================================================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================================================ Removing: docker-common x86_64 2:1.12.6-68.gitec8512b.el7.centos @extras 4.5 k Removing for dependencies: docker-client x86_64 2:1.12.6-68.gitec8512b.el7.centos @extras 11 M Transaction Summary ============================================================================================================================================================================================================ Remove 1 Package (+1 Dependent package)
验证Docker安装
一旦安装完成,我们可以启动和启用Docker服务并通过运行"Hello-World"图像来验证安装。
# systemctl start docker # systemctl enable docker # systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2016-01-23 06:36:24 UTC; 2s ago Docs: https://docs.docker.com Main PID: 30700 (dockerd) Memory: 23.1M CGroup: /system.slice/docker.service ├─30700 /usr/bin/dockerd └─30703 docker-containerd --config /var/run/docker/containerd/containerd.toml # docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
To try something more ambitious, you can run an Ubuntu container with: $docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/
升级Docker CE
我们可以使用yum upgrade命令将来将Docker版本更新到最新的稳定版本。
目前,我们的服务器已经安装了最新的稳定Docker Build,它是Docker 17.12版本。
# docker -v Docker version 17.12.0-ce, build c97c6d6
现在,如果我们需要将此当前稳定版本升级到最新可用的边缘版本,只需在Docker Repository和RUN yum升级命令中启用边缘repo文件,如下所示:
# yum-config-manager --enable docker-ce-edge # yum upgrade docker-ce Dependencies Resolved ============================================================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================================================ Updating: docker-ce x86_64 18.01.0.ce-1.el7.centos docker-ce-edge 33 M Transaction Summary ============================================================================================================================================================================================================ Upgrade 1 Package
这将安装从存储库中提供的最新边缘版本。
我们可以在安装后确认Docker版本。
请参阅此文档以了解有关稳定和边缘发布的更多信息。
# docker -v Docker version 18.01.0-ce, build 03596f5
升级Fedora 27上的Docker
由于Fedora和CentOS都来自Redhat,除了Docker包中的差异,使用的命令几乎相同。
与之前的情况类似,在Fedora也需要删除可用的旧Docker版本并安装Docker Community Edition(Docker CE)以便于安装和升级。
准备工作
要安装Docker,我们需要64位版本的这些最新的Fedora 27版本
允许'从升级Fedora上的旧Docker版本的步骤开始。
- 卸载旧Docker版本
如前所述,Docker和Docker-Engine软件包被称为旧包。
我们可以使用以下命令删除这些旧包:
#dnf remove docker docker-common docker-selinux docker-engine-selinux docker-engine
即使,即使从服务器中删除那些软件包,也可以在/var/lib/docker /文件夹中保留包括镜像,容器,卷和网络的所需Docker内容。
- 安装docker ce.
我们需要为Fedora启用Docker存储库以安装Docker CE版本。
要设置此存储库,我们需要一些命令来管理DNF包管理器。dnf-plugins-core
包提供从命令行管理DNF存储库的命令。
我们可以使用以下命令安装此命令:
# dnf -y install dnf-plugins-core
现在,我们可以使用此命令启用稳定的存储库并使用"dnf install"命令"从此存储库中安装最新的稳定版本。
# dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo Adding repo from: https://download.docker.com/linux/fedora/docker-ce.repo # dnf install docker-ce Last metadata expiration check: 0:00:20 ago on Mon 22 Jan 2016 09:43:35 AM UTC. Dependencies resolved. ============================================================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================================================ Installing: docker-ce x86_64 17.12.0.ce-1.fc27 docker-ce-stable 31 M Installing dependencies: container-selinux noarch 2:2.38-1.fc27 updates 36 k iptables x86_64 1.6.1-4.fc27 fedora 471 k libnetfilter_conntrack x86_64 1.0.6-4.fc27 fedora 62 k libnfnetlink x86_64 1.0.1-11.fc27 fedora 31 k policycoreutils-python-utils x86_64 2.7-1.fc27 fedora 223 k Transaction Summary ============================================================================================================================================================================================================ Install 6 Packages
如前所述,在该Docker存储库(Docker repo文件)中存在边缘和测试repo文件。
但默认情况下,两者都被禁用,以便单独启用稳定的层。
根据需要,我们可以使用以下命令启用它:
# dnf config-manager --set-enabled docker-ce-edge # dnf config-manager --set-enabled docker-ce-test
升级Docker CE
为了升级Docker CE,我们可以使用"DNF -Y升级"。
这将升级到Docker存储库中的最新稳定层。
#dnf -y upgrade docker-ce