在许多企业环境中,网络访问受限或出于安全考虑无法直接连接互联网,这使得在这些环境中安装和部署软件变得更加复杂。为了应对这些挑战,离线部署Docker成为一种实用的解决方案。本文将详细介绍如何在欧拉系统openEuler上进行Docker的离线部署,以便在无网络连接的情况下依然能够顺利使用Docker进行容器化管理。

关于openEuler

openEuler是一个由华为主导并开源的Linux发行版,旨在为企业级应用提供高性能、高安全性和高稳定性的操作系统平台。openEuler是一个由华为主导并开源的Linux发行版,旨在为企业级应用提供高性能、高安全性和高稳定性的操作系统平台。作为一个社区驱动的项目,openEuler不仅继承了Linux的开放性和灵活性,还集成了多种优化和增强功能,特别是在云计算、大数据、人工智能等领域表现出色。

部署最新Docker版本

本次案例使用的是openEuler 24.03的版本,如下图所示:

关于openEuler系统的部署请查看官方的文档,有详细的教程文章。

下载Docker二进制离线包

下图展示了Docker官方提供的二进制包下载页面,可以用于进行Docker的离线安装。通过使用这些官方提供的二进制包,即使在无法访问互联网的环境中,依然能够顺利完成Docker的部署。

本案了采用dockr-27.0.3的版本进行部署,通过下面的命令进行下载:

 wget https://download.docker.com/linux/static/stable/x86_64/docker-27.0.3.tgz

解压文件

首先,将下载好的Docker二进制安装包拷贝到目标系统上,然后使用tar命令解压缩这些文件。以下命令展示了如何完成这一步:

tar -zxvf docker-27.0.3.tgz

这条命令会将Docker的二进制文件解压缩到当前目录下,解压后的文件包括Docker守护进程、客户端、以及相关的命令行工具。如下图所示:

把文件复制到/usr/bin/目录下

完成解压缩后,我们需要将这些文件移动到系统的标准可执行文件目录中,以便系统能够正确调用Docker命令:

cp docker/* /usr/bin/

创建Docker服务文件

使用systemd来管理Docker服务是确保其开机自启动和便捷控制的最佳实践之一。 创建一个名为docker.service的systemd服务文件。这个文件通常位于/usr/lib/systemd/system/目录下:

vim /usr/lib/systemd/system/docker.service

在文件中添加以下内容 :

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

为了使新的服务文件生效,需要重新加载systemd的配置:

systemctl daemon-reload

启动并启用Docker服务

  • 启动Dcoker服务
systemctl start docker
  • 检查Docker服务状态,确保其正常运行:
systemctl status docker

允许上述命令后,输入如下图结果:

  • 设置Docker服务开机自启动
systemctl enable docker

验证Docker安装

通过以下命令验证Docker是否正确安装和运行:

docker --version

执行完上述命令后,输出如下结果:

通过上述返回的信息看到Docker已经正确安装好了。
运行一个简单的Docker容器,验证Docker是否正常工作 :

docker run -d nginx

运行上述命令出现如下图结果,则说明Docker已成功安装并正常运行。

总结

通过以上步骤,我们实现了在欧拉系统上离线部署Docker。尽管离线环境限制了直接从网络获取软件包的能力,但通过提前准备好所需的安装包和依赖,我们依然可以顺利完成Docker的安装和部署。