apt对比:安装Docker的一次复盘
这次apt对比选一个很常见的现场:在Ubuntu 22.04测试机安装Docker,到底用系统仓库的docker.io,还是添加Docker官方APT源安装docker-ce。两条路都能得到容器引擎,但包名、更新节奏、依赖归属和后续维护方式并不一样。
问:案例开始时,为什么没有直接安装?
先执行apt-cache policy docker.io docker-ce。未添加Docker官方源时,docker.io通常能看到Ubuntu仓库候选版本,docker-ce则没有候选项。这一步把问题说清了:不是apt搜不到Docker,而是两个包来自不同维护渠道。接着检查dpkg -l中是否已有docker.io、containerd、runc或podman-docker,避免新旧方案叠在一起。
问:两种安装路线具体差在哪?
系统路线直接运行apt install docker.io,源配置最少,安全更新和发行版维护节奏跟随Ubuntu。官方路线需要按Docker文档添加独立密钥与仓库,再安装docker-ce、docker-ce-cli和containerd.io等包,通常更贴近Docker官方发布节奏。前者省心,后者适合明确需要官方功能或版本的人;不能简单理解成「官方源永远更安全、版本越新越好」。
问:切换路线时最容易翻车在哪里?
最大风险是只安装新包,不处理冲突包。Docker官方文档会要求先移除可能冲突的docker.io、docker-compose、containerd、runc等软件包;移除软件包与删除/var/lib/docker里的镜像、容器数据不是同一件事,但涉及生产环境仍必须先备份并确认存储驱动。添加仓库后,还要再用apt-cache policy确认docker-ce确实来自预期域名。
问:这次apt对比最后怎么选?
如果是课程练习、普通开发机,且不追特定Docker版本,Ubuntu仓库路线维护成本更低。若团队文档、插件或生产基线明确要求Docker CE版本,就采用官方APT源,同时记录密钥文件、源配置和升级策略。安装完成后用systemctl status docker和docker version验证,别只看到apt返回成功就收工;服务未启动、权限组未配置,照样无法正常使用。
常见问题
- docker.io和docker-ce能同时安装吗?
- 不建议。两套包可能在引擎、CLI及containerd依赖上发生冲突。切换前应按目标仓库官方文档移除冲突包,并备份重要容器数据。
- 卸载Docker软件包会删除镜像和容器吗?
- 通常卸载包不会自动清空/var/lib/docker,但不能把这一点当备份方案。重装、切换存储驱动或人工清理目录都可能影响数据。
- 怎么确认Docker来自哪个apt源?
- 运行apt-cache policy docker.io docker-ce,查看Installed、Candidate和版本表中的仓库地址;也可用apt show检查软件包维护信息。