Loading

Debian WSL 2 安装使用 Docker

Docker 作为目前程序员的必备技能,已经被广泛使用。使用 WSL2 直接安装运行社区版本 Docker ,比安装 Docker Desktop 更加节省空间,且启动速度更快。本文将介绍如何在 Debian WSL2 上安装使用社区版 Docker。

安装 Docker 其实主要关注几个问题:1. 安装源的国内镜像使用。 2. Docker Image 仓储的国内镜像配置。 3. WSL2 启动 Docker 时的兼容性设置。

安装

Docker 的国内软件源有很多,各大镜像站都有,如:

http://mirrors.cloud.tencent.com/docker-ce / http://mirrors.aliyun.com/docker-ce / http://mirrors.ustc.edu.cn/docker-ce

安装时照着官方文档 Install Docker Engine on Debian 来操作就行了,只是将相关网站替换为镜像网址。以阿里云软件源为例,安装的命令行如下:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io  

WSL2 兼容性配置

执行了上述命令,你应该已经安装完成了,可是执行 service docker start 应该是会报错的,你还需进行一下兼容性设置。主要是创建 fstab 文件,以及设置 iptables 为 legacy 模式。以使 Docker 能够在 WSL2 上正常启动。

sudo apt install iptables
sudo touch /etc/fstab
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

此时你已经可以通过 root 权限使用 service docker start 启动 Docker 服务,并正常使用。

权限设置

如果你的默认账户不是 root,如果想要不通过 sudo 使用 docker 命令,你还需要将用户加入 docker 用户组。

sudo usermod -aG docker $USER && newgrp docker

在 WSL2 中,docker 发布的服务端口可以正常映射到宿主机的 localhost 的相同端口上,和正常使用 Docker Desktop 一样。

daemon.json 配置

Docker 镜像仓储国内访问速度不佳,国内镜像仓储代理服务有很多,阿里云,daocloud,中科大,网易都有。这里列几个:

https://docker.mirrors.ustc.edu.cn
http://f1361db2.m.daocloud.io
http://hub-mirror.c.163.com

除了镜像加速外,我一般还会设置日志文件的 max-size ,以及 cgroupdriver 。

max-size 配置可以防止日志文件过大

native.cgroupdriver 可选 cgroupfs 和 systemd 两个选项,详见 (Docker 文档的 Options for the runtime 小节)[https://docs.docker.com/engine/reference/commandline/dockerd/#docker-runtime-execution-options]。systemd 用于 cgroup v2 host ,而 wsl 由于目前不兼容 systemd ,只能选择cgroupfs 。在生产环境的服务器上,应优先使用 systemd 选项。虽然 cgroupfs 目前是docker的默认选项,我还是会特别指定它。

sudo mkdir /etc/docker/

MIRROR=https://docker.mirrors.ustc.edu.cn
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": ["$MIRROR"],
  "insecure-registries": ["192.168.196.110:5000"]
}
EOF

至此,本教程结束了,你可以通过 sudo service docker start 启动 docker,enjoy 。

posted @ 2022-03-23 12:51  wswind  阅读(1903)  评论(0编辑  收藏  举报