Docker / Podman 安装与换源
安装 Docker 或 Podman(选一个就好),之后给 Docker Hub 换源。
Docker 安装
Docker CLI(Linux)
- 如果你发行版的仓库中有(比如 Arch),那直接用包管理器安装就行了。
- 需要注意的是,Debian系(包括Ubuntu等)仓库中的
docker
并不是我们要用的,Docker 包名为docker.io
,具体可以查看官方文档。 - 如果仓库中没有,或仓库版本较旧要最新版的请查看官方文档或 Docker CE 软件仓库镜像使用帮助安装。推荐使用其中的安装脚本。
使用安装脚本步骤如下。
国内安装 Docker 时先更换镜像站。请先执行:
export DOWNLOAD_URL="https://mirrors.cernet.edu.cn/docker-ce"
curl -fsSL https://get.docker.com/ | sudo -E sh
Docker Desktop(Windows & macOS & Linux)
Docker Desktop 是 Docker 官方提供的一个 GUI 管理工具,可用帮你自动化安装 docker,比较省心。Docker Desktop 支持 Windows & macOS & Linux,在官网即可下载。
Docker 使用了 Linux 内核的一些特性,在 Windows & macOS 上使用需要虚拟机内运行(比如 Windows 上的 Docker 就是通过 WSL 实现的)。这两个平台一般会安装 Docker Desktop。
Linux 上就算了,占用太高了,真喜欢这种“面板”不如用 Portainer 或者下面的 Podman Desktop。
Podman 安装
Podman 是 Redhat 开发的 “Docker 替代品”。它无需后台运行守护进程,并且是 rootless 的(具体可看官网介绍)。
Podman 用法和 Docker 基本上一样,甚至官方文档里说习惯 docker 的可以直接 alias docker=podman
。😂
无守护进程是个好事,少个常驻进程。
rootless 现在 Docker 也有办法实现。但 rootless 说是更安全,但是对我来说反倒会带来不方便,比如跑个 nginx 需要 80、443 ,普通用户没有权限创建,root/sudo 创建了之后普通用户又看不见这个容器。
Podman CLI (Linux)
Podman 因为是 Redhat 推出的,主流发行版的仓库基本都是有的,包管理器直接安装即可。
Podman Desktop(Windows & macOS & Linux)
与 Docker 类似,Podman 也提供了官方的 GUI 管理工具,可以帮你自动化安装 Podman,还支持 Docker 管理。它也是支持 Windows & macOS & Linux。可以直接去 Podman 官网下载。
具体实现和 Docker 类似,Windows 和 macOS 上也是虚拟机,但 Windows 端的感觉要比 Docker Desktop 轻量。Linux端就是一个独立的小工具。
Podman 配置缺省 Docker Hub
Podman 拉取 Docker Hub 内镜像时,镜像名称不能省略 docker.io/
前缀。你可以每次都手动添加,也按下面方法可以配置缺省使用。
打开 /etc/containers/registries.conf
或新建 /etc/containers/registries.conf.d/docker.conf
,在末尾添加:
unqualified-search-registries = ["docker.io"]
[[registry]]
location = "docker.io"
访问 Docker Hub
因为 docker hub 服务器在国外,国内拉取镜像挺慢的,幸好国内有很多镜像站,你可以使用这些镜像站。除了使用 docker hub 镜像站,我们还可以让 docker/podman 使用代理拉取镜像。
Docker Hub 仓库镜像
国内有很多已经停止维护或不再免费开放,比如中科大的已停止校外访问,docker-cn的、腾讯云的等都不能用了,看到还在说这些的相关文章/教程请直接关闭。
常用镜像
- 云服务器参考下面
- 公网
- 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.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
等变量。无守护进程的又一个优势。