Docker / Podman 安装与换源

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 仓库镜像

可用镜像

  • 云服务器参考下面
  • 公网

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_proxyhttps_proxy 等变量。无守护进程的又一个优势。