目录
Docker Desktop for Windows 安装教程
参考自官方文档Install Docker Desktop on Windows
环境准备
安装Docker Desktop for Windows需要:
- CPU支持虚拟化
- Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher.
- Windows 10 64-bit: Home or Pro 21H1 (build 19043) or higher, or Enterprise or Education 20H2 (build 19042) or higher.
- 启用了WSL2功能,两种启用方法,参考官方文档(新版)和官方文档(旧版),本文也会介绍启用方法
启用WSL2
参考官方文档(新版)
- 管理员身份运行PowerShell,执行以下命令
wsl --install
此命令将启用所需的可选组件,下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版(默认安装 Ubuntu,请参阅下文更改此设置)。
首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到计算机上。 未来的所有启动时间应不到一秒。
上述命令仅在完全未安装 WSL 时才有效,如果运行 wsl --install 并查看 WSL 帮助文本,请尝试运行 wsl --list --online 以查看可用发行版列表并运行 wsl --install -d <DistroName> 以安装发行版。 若要卸载 WSL,请参阅卸载旧版 WSL 或注销或卸载 Linux 发行版。
Docker Engine on Ubuntu 安装教程(和安装DD4L二选一)
首先需要卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc
/var/lib/docker 中的内容会被保留,如果要完全删除,继续参考文章最后的卸载教程完成卸载
安装方法
三种方法,通过仓库安装(推荐),通过DEB包手动安装,以及使用脚本安装。
在安装之前,请让自己熟悉脚本安装的潜在风险和限制:
该脚本需要root或sudo特权才能运行。
该脚本会尝试检测您的 Linux 发行版和版本并为您配置包管理系统,并且不允许您自定义大多数安装参数。
该脚本会在不要求确认的情况下安装依赖项和建议。这可能会安装大量软件包,具体取决于主机的当前配置。
默认情况下,该脚本安装 Docker、containerd 和 runc 的最新稳定版本。使用此脚本配置机器时,可能会导致 Docker 的主要版本升级意外。在部署到生产系统之前,始终在测试环境中测试(主要)升级。
该脚本并非旨在升级现有的 Docker 安装。使用脚本更新现有安装时,可能无法将依赖项更新到预期版本,从而导致使用过时的版本。
本文只介绍使用仓库安装的方法
使用仓库安装
- 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- 添加 Docker 的官方 GPG 密钥:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 使用以下命令设置存储库:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 更新apt包索引,安装最新版本的 Docker Engine、containerd 和 Docker Compose
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
或者安装特定版本:
列出特定版本
apt-cache madison docker-ce
使用第二列中的版本字符串替换<VERSION_STRING>安装特定版本,例如5:20.10.16~3-0~ubuntu-jammy
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io docker-compose-plugin
- 通过运行hello-world镜像来验证是否正确安装
sudo docker run hello-world
若打印一条消息并退出,则已安装成功, docker 用户组已创建,但未向其中添加任何用户。需要使用 sudo 来运行Docker命令。若需要使用非特权用户运行及进行其他可选的配置步骤,继续进行接下来的步骤:进一步配置Docker
进一步配置Docker
参考官方文档Post-installation steps for Linux
以非root用户身份管理Docker
Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字归用户所有root,其他用户只能使用sudo。Docker 守护程序始终以root用户身份运行。
如果您不想在docker命令前加上sudo,请创建一个名为 docker 的Unix组并将用户添加到其中。当 Docker 守护进程启动时,它会创建一个可供docker组成员访问的 Unix 套接字。
该docker组授予与root 用户等效的权限。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。
- 创建 docker 组
sudo groupadd docker
- 将用户添加到 docker 组中
sudo usermod -aG docker $USER
- 注销并重新登录
- 验证是否可以不使用 sudo 运行docker
docker run hello-world
若报下方的错误
WARNING: Error loading config file: /home/user/.docker/config.json
stat /home/user/.docker/config.json: permission denied
则修改权限
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
将 Docker 配置为开机启动
在 Debian 和 Ubuntu 上,Docker 服务默认配置为开机自启。
若需要设置为开机自启,使用以下命令
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
若禁用开机自启,则
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
为Docker指定DNS服务器
- 编辑 /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
- 添加地址
"dns": ["8.8.8.8", "8.8.4.4"]
- 重启守护程序
sudo service docker restart
使用 systemd 控制 Docker
启动Docker守护进程(Docker daemon)
sudo systemctl start docker
为Docker设置HTTP/HTTPS代理
Docker daemon在它的启动环境中使用 HTTP_PROXY 、HTTPS_PROXY、NO_PROXY 环境变量配置 HTTP 或 HTTPS 代理行为,这些环境变量不能在 daemon.json 文件中配置,需要在Docker systemd 文件中添加配置
- 为docker服务创建systemd目录
sudo mkdir -p /etc/systemd/system/docker.service.d
- 创建一个名为 /etc/systemd/system/docker.service.d/http-proxy.conf 的文件并添加一个或多个环境变量
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
以下为示例内容
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1080"
Environment="HTTPS_PROXY=http://127.0.0.1:1080"
Environment="NO_PROXY=localhost,127.0.0.1"
- 刷新更改并重新启动Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证是否加载成功
sudo systemctl show --property=Environment docker
换源
参考菜鸟教程,推荐使用阿里云。
若不使用自定义源,必须删除配置文件,否则会导致docker服务启动失败
Docker Desktop for Linux(DD4L)安装教程
参考自官方文档Install Docker Desktop on Linux和Install Docker Desktop on Ubuntu
本教程所用系统为Ubuntu22.04
环境准备
安装Docker Desktop for Linux需要:
- CPU支持虚拟化
- 系统支持KVM虚拟化(检查、配置方法参见下方),并且可以访问kvm设备,QEMU版本必须为5.2或更高
- 64位系统且使用systemd初始化
- 桌面环境为Gnome或KDE,对于Gnome需要安装托盘图标插件AppIndicator,插件安装方法参见我的另一篇博客Ubuntu桌面美化教程(GNOME Tweak Tool安装教程)
DD4L以虚拟机的形式运行的原因参见官方文档Why Docker Desktop for Linux runs a VM
检查、配置KVM
安装kvm参见我的博客Ubuntu安装KVM虚拟机
- 运行kvm模块
modprobe kvm
# Intel处理器执行这个
modprobe kvm_intel
# AMD处理器执行这个
modprobe kvm_amd
如果上方的命令执行失败,运行以下指令检查
kvm-ok
- 检查kvm模块是否开启
lsmod | grep kvm

- 查看kvm设备权限并为自己当前的用户授予权限
ls -al /dev/kvm
sudo usermod -aG kvm $USER

- 重启电脑
安装Docker Desktop
- 卸载旧版本
sudo apt remove docker-desktop
若要完全删除,还需要删除配置文件和数据文件以及链接,并清除剩余的systemd服务文件
rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
sudo apt purge docker-desktop
注意:如果安装过技术预览版或beta版的DD4L,需要删除所有由这些包生成的文件,例如
~/.config/systemd/user/docker-desktop.service
~/.local/share/systemd/user/docker-desktop.service
另外,对于非Gnome环境,需要安装gnome-terminal
sudo apt install gnome-terminal
- 设置仓库
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 如果没有这个文件夹,则需要建立
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 下载deb安装包
下载release版 - 安装
sudo apt-get update
# 需要替换为具体的文件名称
sudo apt-get install ./docker-desktop-<version>-<arch>.deb
在安装过程中,若报这种错,忽略即可
N: Download is performed unsandboxed as root, as file '/home/user/Downloads/docker-desktop.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
安装包还会自动执行以下操作
- 在Docker Desktop二进制文件上设置映射特权端口和设置资源限制的功能。
- 向/etc/hosts中添加Kubernetes的DNS
- 创建从/usr/bin/docker到/usr/local/bin/com.docker.cli的链接
启动Docker Desktop
可以直接从应用程序菜单找到Docker Desktop启动
或打开终端,输入
systemctl --user start docker-desktop
- 查看Docker Desktop版本
docker compose version
docker --version
docker version
- 设置开机自启
在图形界面的Settings > General > Start Docker Desktop when you log in设置,或终端输入
systemctl --user enable docker-desktop
- 停止Docker Desktop
点击图形界面的Quit Docker Desktop,或终端输入
systemctl --user stop docker-desktop
升级Docker Desktop
只需要下载新版本,然后执行安装命令即可
# 需要替换为具体的文件名称
sudo apt-get install ./docker-desktop-<version>-<arch>.deb
卸载Docker Desktop
sudo apt remove docker-desktop
若要完全删除,还需要删除配置文件和数据文件以及链接,并清除剩余的systemd服务文件
rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
sudo apt purge docker-desktop
还要删除$HOME/.docker/config.json中的credsStore和currentContext配置
然后执行以下命令(参考官方文档)
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
