Docker / Podman 安装与换源
安装 Docker 或 Podman(选一个就好),以及更换 Docker Hub 镜像源。
安装 Docker / Podman
我到底安装哪一个?可以参考下表:
Linux(CLI) | Windows & macOS & Linux(GUI) | |
---|---|---|
docker | Docker Engine (原 Docker CE) |
Docker Desktop |
podman | Podman | Podman Desktop |
Docker 作为最有名的容器引擎应该就不用我多说了。Podman 是 Redhat 开发的 “Docker 替代品”,特点是无需后台运行守护进程,并且是 rootless 的。更多请看:是否要用 Podman 代替 Docker
Docker CLI(Linux)
- 如果你发行版的仓库中有且更新及时(比如 Arch、Alpine),那直接用包管理器安装就行了。
- 需要注意的是,Debian系(包括Ubuntu等)仓库中的
docker
并不是我们要用的,Docker 包名为docker.io
。 - 如果仓库中没有,或仓库版本较旧要最新版的请查看官方文档或 Docker CE 软件仓库镜像使用帮助安装。
个人用户推荐用其中的安装脚本进行安装:
- 可以正常访问 docker 请执行
curl -fsSL https://get.docker.com/ | sudo -E sh
- 使用校园网联合镜像站请执行:
export DOWNLOAD_URL="https://mirrors.cernet.edu.cn/docker-ce" curl -fsSL https://get.docker.com/ | sudo -E sh
- 使用阿里云镜像站安装请执行
curl -fsSL https://get.docker.com/ | sudo sh -s - --mirror Aliyun
Podman CLI (Linux)
Podman 因为是 Redhat 推出的,主流发行版的仓库基本都是有的,包管理器直接安装即可。
配置缺省 Docker Hub
Podman 拉取 Docker Hub 内镜像时,镜像名称不能省略 docker.io/
前缀。你可以每次都手动添加,也可以按下面方法配置缺省使用。
打开 /etc/containers/registries.conf
或新建 /etc/containers/registries.conf.d/docker.conf
,在末尾添加:
unqualified-search-registries = ["docker.io"]
Docker Desktop 或 Podman Desktop
Docker Desktop 是 Docker 官方提供的一个 GUI 管理工具,可以帮你自动化安装 docker(Docker Engine)。Podman 官方也提供了类似的 GUI 管理工具 Podman Desktop,它不仅可以帮你自动化安装和管理 Podman,还支持 Docker 管理。
它们都是支持 Windows & macOS & Linux 的,具体下载地址请看前面的表格。
Docker 使用了 Linux 内核的一些特性,在 Windows & macOS 上使用需要虚拟机内运行(比如 Windows 上的 Docker 就是通过 WSL 实现的),这两个平台一般会安装 Docker Desktop。Podman 也也同理。
Linux 上就算了,占用太高了,真喜欢这种“图形化面板”不如用 Portainer,或者 lazydocker 这样的 TUI 软件。
访问 Docker Hub
因为 Docker Hub 服务器在国外,国内拉取镜像挺慢的,解决方法有两种。
- 一是可以使用镜像站,国内还是有
很多镜像的。 - 二是可以让 docker、podman 通过代理拉取镜像。
Docker Hub 仓库镜像
可用镜像
- 云服务器参考下面
- 公网
- 2024.6 知名高校、企业的公网镜像基本都关了。如果你有可用的镜像,请自行替换下面的配置文件。
可用镜像参考:https://status.1panel.top/status/docker
- 2024.6 知名高校、企业的公网镜像基本都关了。如果你有可用的镜像,请自行替换下面的配置文件。
Docker 配置镜像源
打开或新建 /etc/docker/daemon.json
,添加:
{
"registry-mirrors": [
"https://example.com"
]
}
将
example.com
替换为可用镜像。
Podman 配置镜像源
在刚刚配置 Docker Hub 的地方继续追加:
[[registry]]
location = "docker.io"
[[registry.mirror]]
location = "exaple.com"
将
example.com
替换为可用镜像。
Docker / Podman 设置代理
Docker 设置代理
参见官方文档:https://docs.docker.com/config/daemon/proxy/#systemd-unit-file
因为 Docker 有守护进程 dockerd,我们应该修改它的配置。而它又是 Systemd 管理的,所以我们要编辑 Systemd 的配置。
sudo mkdir -p /etc/systemd/system/docker.service.d
echo '[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/"
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1"
' | sudo tee /etc/systemd/system/docker.service.d/proxy.conf
Podman 设置代理
与之相比 Podman 就简单多了,设置系统代理就好了,也就是它会读取 http_proxy
、https_proxy
等变量。无守护进程的又一个优势。