Docker / Podman 安装与换源
Docker / Podman(选一个就好)的安装与 Docker Hub 换源。
Docker 安装
Docker CLI(Linux)
- 如果你发行版的仓库中有(比如 Arch),那直接用包管理器安装就行了。
- 需要注意的是,Debian系(包括Ubuntu等)仓库中的
docker
并不是我们要用的,具体可以查看官方文档。 - 如果仓库中没有,(并且没有网络问题的话)请查看官方文档安装。推荐使用其中的安装脚本。
使用安装脚本步骤如下:
国内安装 Docker 时最好先换源,完整安装流程请查看:Docker CE 软件仓库镜像使用帮助。使用其302智能选择镜像站请先执行:
export DOWNLOAD_URL="https://mirrors.cernet.edu.cn/docker-ce"
镜像同步状态查看:docker-ce - 校园网联合镜像站
# 如您使用 curl
curl -fsSL https://get.docker.com/ | sudo -E sh
# 如您使用 wget
wget -O- https://get.docker.com/ | sudo -E sh
Docker Desktop(Windows & macOS & Linux)
Docker Desktop 是 Docker 官方提供了一个 GUI 管理工具,支持 Windows & macOS & Linux。
Docker 使用了 Linux 内核的一些特性,在 Windows & macOS 上使用需要虚拟机内运行(比如 Windows 上的 Docker 就是通过 WSL 实现的)。这两个平台一般会安装 Docker Desktop,帮你自动化安装,比较省心。
Docker 官网就有,国内下载困难的话,镜像站里也是有的:Docker - 校园网联合镜像站
Linux 上就算了,占用太高了(虽然 Windows 和 macOS 也是),真喜欢这种“面板”不如用 Portainer 或者下面的 Podman Desktop。
其他平台安装
请看 官方文档
Podman 安装
Podman 是 Redhat 开发的 “Docker 替代品”。它是 rootless 的(具体可看官网介绍),并且无需后台运行守护进程。
Podman 用法和 Docker 基本上一样,甚至官方文档里说习惯 docker 的可以直接 alias docker=podman
。😂
Podman CLI (Linux)
Podman 因为是 Redhat 推出的,主流发行版的仓库基本都是有的,包管理器直接安装即可。
没有可以直接去 Podman 官网下载。
Podman Desktop(Windows & macOS & Linux)
与 Docker 类似,Podman 也提供了官方的 GUI 管理工具,还支持 Docker 管理,也是支持 Windows & macOS & Linux。
可以直接去 Podman 或 Podman Desktop 官网下载。
具体实现和 Docker 类似,Windows 和 macOS 上也是虚拟机。但 Windows 端的感觉明显要比 Docker Desktop 轻量。 Linux端就是一个独立的小工具。
rootless 现在 Docker 也有办法实现。但 rootless 说是更安全,但是对我来说反倒会带来不方便,比如跑个 nginx 需要 80、443 ,普通用户没有权限创建,root/sudo 创建了之后普通用户又看不见这个容器。
Docker Hub 仓库镜像
国内有很多 Docker 镜像,但有很多已经停止维护或不再免费开发,比如中科大的已停止校外访问,docker-cn的、腾讯云的等都不能用了。看到还在说这些的相关文章/教程请直接略过。
除了下方的几个,还可以使用阿里云的,但是需要自己去 容器镜像服务 创建专属镜像仓库。当然肯定还有,欢迎评论中提交。
Docker
打开或新建 /etc/docker/daemon.json
,添加:
{
"registry-mirrors": [
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://dockerproxy.com"
]
}
Podman
打开 /etc/containers/registries.conf
或新建 /etc/containers/registries.conf.d/docker-mirrors.conf
,在末尾添加加:
unqualified-search-registries = ["docker.io"]
[[registry]]
location = "docker.io"
[[registry.mirror]]
location = "docker.nju.edu.cn"
[[registry.mirror]]
location = "docker.mirrors.sjtug.sjtu.edu.cn"
[[registry.mirror]]
location = "hub-mirror.c.163.com"
[[registry.mirror]]
location = "mirror.baidubce.com"
[[registry.mirror]]
location = "dockerproxy.com"