kylin10-x64 离线安装docker28.3.3
1、环境介绍
# hostnamectl
Static hostname: ky10
Icon name: computer-vm
Chassis: vm
Machine ID: f554764e21b74c2fa057d9aaa296af63
Boot ID: 4c155f0185c24a14970ab5ea60de34f4
Virtualization: vmware
Operating System: Kylin Linux Advanced Server V10 (Halberd)
Kernel: Linux 4.19.90-89.11.v2401.ky10.x86_64
Architecture: x86-64
2、下载离线安装包
下载地址: https://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-28.3.3.tgz
选择自己需要的版本并下载。
https://mirrors.aliyun.com/docker-ce/linux/static/stable/
aarch64/ 是arm 架构的
生产环境下选择稳定版本
“选择稳定版本:尽量选择最新的稳定版本(如 28.x.x),避免使用过旧或测试版本” 这句话是软件部署中的一个 最佳实践原则,尤其是在生产环境(正式运行的服务器)中非常重要。
下面我们来详细解释这句话的含义和背后的逻辑。
✅ 一、“稳定版本”是什么意思?
🌟 稳定版本(Stable Release)
是经过充分测试、修复了大量已知 bug 的正式发布版本。通常用于 生产环境(即真实业务运行的服务器)。版本号格式一般为:,例如:
主版本.次版本.修订号
28.3.3
:主版本(major)
28:次版本(minor)
3:修订/补丁版本(patch)
3
✅ 举例:
就是一个稳定的正式版本。
docker-28.3.3.tgz
⚠️ 对比:“测试版本”或“开发版本”是什么?
| 类型 | 说明 | 是否推荐用于生产 |
|---|---|---|
| Edge / Nightly / Test 版本 | 比如 |
❌ 不推荐 |
| RC 版本(Release Candidate) | 候选发布版,接近稳定但仍有风险 | ⚠️ 谨慎使用 |
| Dev / Snapshot 版本 | 开发中的快照,极不稳定 | ❌ 绝对不要用于生产 |
这些版本更新快、功能新,但可能包含严重 bug、崩溃、数据丢失等问题。
✅ 二、为什么推荐“最新的稳定版本”?
1. ✅ 安全性更高
新的稳定版本通常修复了旧版本中的 安全漏洞。例如:某个旧版 Docker 存在“容器逃逸”漏洞,新版已修复。
🔐 使用旧版本 = 暴露在已知风险中
2. ✅ 功能更完善、性能更好
新版本通常优化了资源占用、启动速度、网络性能等。支持新的容器技术、更好的日志管理、更灵活的配置。
3. ✅ 社区支持更好
老旧版本可能已经 停止维护(EOL, End of Life)。遇到问题时,社区、文档、搜索引擎结果更丰富。
4. ✅ 兼容性更强
新版 Docker 更好地支持 Kubernetes、Prometheus、Zabbix 等生态工具。与镜像仓库(如 Docker Hub、阿里云镜像)兼容性更好。
❌ 为什么不建议使用“过旧版本”?
| 风险 | 说明 |
|---|---|
| 安全漏洞 | 已知漏洞未修复,容易被攻击 |
| 功能缺失 | 不支持新特性(如 rootless 模式、cgroup v2) |
| Bug 更多 | 用户反馈的问题在旧版本中未解决 |
| 无法升级 | 跨版本升级困难,甚至需要重装 |
📉 举例:
是 2018 年的版本,现在已经 完全过时,不再受支持。
docker-18.06.3-ce.tgz
🎯 那“最新”是不是越新越好?
不是!要区分:
| 类型 | 是否推荐 |
|---|---|
最新的稳定版(如 ) |
✅ 推荐 |
最新的测试版(如 ) |
❌ 不推荐用于生产 |
所以:
✅ 正确做法:选择 当前最新的稳定版本(latest stable release),而不是“最新发布的任何版本”。
🛠 实际建议(以 Docker 为例)
✅ 推荐选择:
docker-28.3.3.tgz
docker-28.2.1.tgz
docker-27.4.1.tgz
这些是 稳定分支 中的最新修订版。
❌ 避免选择:
→ 测试版
docker-29.0.0-beta.1.tgz → 太旧,已停止维护
docker-19.03.15.tgz → 每日构建版,极不稳定
docker-nightly.tgz
📌 总结:一句话记住
“用最新的稳定版,不用最新的测试版”
就像你不会拿“测试版手机系统”去跑公司业务一样,服务器软件也必须追求 稳定性、安全性和可维护性。
如果你正在为生产环境部署 Docker,我建议你选择:
👉 或更高版本的稳定版(只要不是 beta/nightly)
docker-28.3.3.tgz
3、安装docker
cd /soft/
# 解压
tar -zxvf docker-28.3.3.tgz
docker/
docker/ctr
docker/dockerd
docker/containerd
docker/runc
docker/docker-proxy
docker/docker
docker/docker-init
docker/containerd-shim-runc-v2
# 移动到系统路径
cp docker/* /usr/bin/
3.1 配置服务
创建文件:/etc/systemd/system/docker.service,并填充如下内容:
# 配置服务
vi /etc/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
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --config-file /etc/docker/daemon.json
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
3.2 启动服务
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker.service
systemctl enable docker.service
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /etc/systemd/system/docker.service.
docker ps -a
🔧 命令逐条解释
1.
chmod +x /etc/systemd/system/docker.servicechmod +x /etc/systemd/system/docker.service作用:给 Docker 服务文件添加“可执行”权限。详细说明:
:修改文件权限。
chmod:增加“执行”权限(execute)。
+x:这是 systemd 管理 Docker 服务的配置文件。✅ 为什么需要?
/etc/systemd/system/docker.service
虽然文件本身不是“可执行程序”,但某些系统或安装流程要求它有执行权限才能被 systemd 正确加载。这是一个保险操作。
.service⚠️ 注意:通常
文件不需要
.service权限也能运行,但加上也无害。
+x
2.
systemctl daemon-reloadsystemctl daemon-reload作用:重新加载 systemd 的配置文件。详细说明:当你新增、修改或删除了
文件后,必须运行这条命令,让 systemd 重新读取所有服务配置。否则
.service可能会报错:“Unit docker.service not found”。
systemctl start docker✅ 类比:就像你修改了网站代码后要“重启服务器”一样,这是让系统“重新感知”服务配置。
3.
systemctl start docker.servicesystemctl start docker.service作用:启动 Docker 服务。详细说明:
:启动一个服务。
systemctl start:服务名称。✅ 启动后,Docker 守护进程(
docker.service)就开始运行了,你可以使用
dockerd命令了。
docker📌 检查是否启动成功:
systemctl status docker如果看到
,说明成功。
active (running)
4.
systemctl enable docker.servicesystemctl enable docker.service作用:设置 Docker 服务开机自启。输出解释:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /etc/systemd/system/docker.servicesystemd 创建了一个符号链接(软链接),指向你的服务文件。这样系统在启动时就会自动加载并启动 Docker。
✅ 结果:下次服务器重启,Docker 会自动启动,无需手动干预。
🐳
是什么意思?
docker ps -adocker ps -a这是 查看所有容器状态的核心命令。
参数解释:
:列出正在运行的容器。
docker ps或
-a:显示 所有容器,包括:正在运行的(running)已停止的(exited)曾经运行过但现在不存在的(除非用
--all)
--no-trunc输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d9b100f2f636 nginx:latest "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp web-server a7c6a5b4c8d9 mysql:8.0 "docker-entrypoint.s…" 5 hours ago Exited (0) 3 hours ago db-server字段说明:
列名 含义
CONTAINER ID容器唯一 ID(短格式)
IMAGE使用的镜像名称
COMMAND容器启动时运行的命令
CREATED容器创建时间
STATUS当前状态(运行中、已停止等)
PORTS端口映射情况
NAMES容器名称(自动生成或手动指定)
✅ 总结:
命令 目的
chmod +x docker.service确保服务文件可执行(保险操作)
systemctl daemon-reload刷新 systemd 配置
systemctl start docker启动 Docker 服务
systemctl enable docker设置开机自启
docker ps -a查看当前所有容器状态(确认 Docker 是否正常工作)
💡 小贴士
如果
报错:
docker ps -a
Cannot connect to the Docker daemon
→ 说明 Docker 没启动成功,检查:
systemctl status docker查看 Docker 版本:
docker --version查看详细信息:
docker info
你现在已经成功启动了 Docker!接下来可以尝试:
docker run hello-world
3.3 配置daemon.json
/etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://docker.m.daocloud.io",
"https://docker.laoex.link"
]
}
3.4 重新加载
systemctl daemon-reload
systemctl restart docker




















暂无评论内容