文章目录
离线安装必要性
Docker 离线安装的必要性主要体现在以下几个方面:
- 安全合规性:某些组织或企业的服务器出于安全政策的考虑,不允许连接到互联网。在这种情况下,为了遵守安全规定,需要采用离线安装的方式来部署 Docker。
- 网络限制:在一些特定的网络环境中,服务器可能因为网络隔离或限制而无法访问外部网络资源,这就需要通过离线方式来安装所需的软件。
- 稳定性和版本控制:在生产环境中,为了确保系统的稳定性,可能需要使用特定版本的 Docker,而这个版本可能不是最新版本。通过离线安装,可以确保安装的 Docker 版本是经过测试和验证的。
- 避免潜在风险:在线安装过程中可能会受到网络攻击或恶意软件的威胁,而离线安装可以在一个受控的环境中进行,降低这些风险。
总之,Docker 离线安装提供了一种灵活、安全、可控的部署方式,尤其适用于那些对网络安全性、稳定性和合规性有特殊要求的场景。
分步安装法
- 下载 Docker 离线安装包- 在一台可以访问互联网的电脑上,从清华镜像源下载 Docker 的 tar.gz 格式的安装包。
wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/static/stable/x86_64/docker-24.0.6.tgz
- 上传到服务器- 使用文件传输工具(如 WinSCP)将下载的 Docker 安装包上传到目标服务器的
/opt/software/
目录下。 - 解压安装包
tar-zxvf docker-24.0.6.tgz
- 复制文件
sudocp ./docker/* /usr/bin
- 创建 Docker 服务文件
sudocd /etc/systemd/system/sudotouch docker.service
- 编辑 Docker 服务文件- 打开
docker.service
文件,例如使用sudo vim docker.service
。- 将以下内容复制到docker.service
文件中。[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyExecStart=/usr/bin/dockerd --selinux-enabled=falseExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityTimeoutStartSec=0Delegate=yesKillMode=processRestart=on-failureStartLimitBurst=3StartLimitInterval=60s[Install]WantedBy=multi-user.target
- 添加执行权限
sudochmod +x docker.service
- 加载并启动 Docker 服务
sudo systemctl daemon-reloadsudo systemctl start docker
- 设置开机自启动
sudo systemctl enable docker.service
- 验证 Docker 安装
sudo systemctl status dockerdocker--version
一键安装法
- 创建软件安装目录
sudomkdir-p /opt/software/docker
- 上传安装软件- 将安装软件上传到
/opt/software/docker
目录。 - 创建 Docker 服务文件- 在
/opt/software/docker
目录下创建docker.service
文件, 内容参考分步安装第6步
。 - 编写一键安装脚本- 在 Docker 安装包所在目录下创建
install.sh
脚本文件,并填入以下内容:#!/bin/shecho'解压tar包'tar-xvf$1echo'将docker目录下所有文件复制到/usr/bin目录'cp docker/* /usr/binrm-rf docker/*echo'将docker.service 复制到/etc/systemd/system/目录'cp docker.service /etc/systemd/system/echo'添加文件可执行权限'chmod +x /etc/systemd/system/docker.serviceecho'重新加载配置文件'systemctl daemon-reloadecho'启动docker'systemctl start dockerecho'设置开机自启'systemctl enable docker.serviceecho'docker安装成功'docker--version
- 编写一键卸载脚本- 在 Docker 安装包所在目录下
/opt/software/docker
创建uninstall.sh
脚本文件,并填入以下内容:#!/bin/bash# 卸载 Docker 脚本# 步骤一:停止 Docker 服务echo"停止 Docker 服务..."sudo systemctl stop docker# 步骤二:删除 Docker 服务echo"移除 Docker 开机自启动..."sudo systemctl disable docker.serviceecho"删除 Docker 服务文件..."sudorm-f /etc/systemd/system/docker.service# 步骤三:删除 Docker 相关命令和文件echo"删除 Docker 相关命令..."sudorm-f /usr/bin/docker*sudorm-f /usr/bin/containerd*sudorm-f /usr/bin/ctrsudorm-f /usr/bin/runcecho"删除 Docker 目录和容器相关文件..."sudorm-rf /var/lib/dockersudorm-rf /var/lib/containerd# 步骤四:验证是否已成功卸载 Dockerecho"验证 Docker 是否已成功卸载..."if!docker--version&> /dev/null;thenecho"Docker 卸载成功。"elseecho"Docker 卸载失败,请检查。"fi
- 赋予脚本执行权限
chmod +x install.shchmod +x uninstall.sh
- 执行安装脚本
./install.sh docker-24.0.6.tgz
- 验证 Docker 安装
sudo systemctl status dockerdocker--version
- 卸载Docker安装
./uninstall.sh
离线镜像加载
以 Docker 中的 MySQL 5.7 镜像为例,演示镜像离线加载的步骤, 包括从拉取(pull)到保存(save)再到加载(load)的步骤:
- 拉取 MySQL 5.7 镜像 在有网络连接的机器上,首先使用
docker pull
命令来下载 MySQL 5.7 镜像。docker pull mysql:5.7
- 保存 MySQL 5.7 镜像为 tar 文件下载完成后,使用
docker save
命令将 MySQL 5.7 镜像打包为 tar 文件。docker save -o mysql-5.7.tar mysql:5.7
- 传输 tar 文件 将生成的
mysql-5.7.tar
文件传输到目标机器。你可以使用scp
、USB 驱动器或其他文件传输方法。下面以scp
为例:scp mysql-5.7.tar username@host:/opt/software/docker
-username@host
替换成你的服务器的用户名和IP地址。 - 在目标机器上加载 tar 文件为镜像 在目标机器上,使用
docker load
命令来从 tar 文件中加载 MySQL 5.7 镜像。docker load -i mysql-5.7.tar
- 验证镜像是否加载成功 使用
docker images
命令来检查 MySQL 5.7 镜像是否已经成功加载到本地镜像库中。docker images
你应该能够在列出的镜像中看到mysql:5.7
。 - 运行 MySQL 5.7 容器如果你想要在 Docker 中运行 MySQL 5.7,可以使用以下命令:
docker run --name mysql -eMYSQL_ROOT_PASSWORD=123456-d mysql:5.7
这里,mysql
是你给容器指定的名称,123456
是你设置的 MySQL root 用户的密码,-d
表示以 detached 模式运行容器。
注意事项
- 确保在执行这些步骤之前,你有足够的权限(可能需要
sudo
)来执行这些命令,并且服务器的防火墙设置允许 Docker 服务的正常运行。
参考文章
Docker】Docker学习之一:离线安装Docker步骤
Docker安装包下载
版权归原作者 weixin_44585288 所有, 如有侵权,请联系我们删除。