wsl2安装docker引擎(Install Docker Engine on Debian)

安装

1.卸载旧版本

在安装 Docker 引擎之前,您必须首先确保卸载任何冲突的软件包。

发行版维护者在他们的存储库。必须先卸载这些软件包,然后才能安装 Docker 引擎的正式版本。

要卸载的非官方软件包是:

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

此外,Docker引擎依赖项捆绑为一个捆绑包。如果你以前安装过,卸载它们以避免 与 Docker 引擎捆绑的版本冲突。

containerd ``runc ``containerd.io ``containerd

运行以下命令以卸载所有冲突的软件包:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get可能会报告您没有安装这些软件包

卸载 Docker 时会自动删除存储的映像、容器、卷和网络

2.使用apt存储库安装

(1).更新软件包索引并安装软件包以允许使用 基于 HTTPS 的存储库:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

(2).添加 Docker 的官方 GPG 密钥:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

(3).使用以下命令设置存储库:

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注意

如果您使用衍生发行版,例如 Kali Linux, 您可能需要替换此命令中预期 打印版本代号:

(. /etc/os-release \&\& echo "VERSION_CODENAME")

(4).更新包索引:apt

sudo apt-get update

3.安装 Docker 引擎

(1).安装 Docker Engine、containerd 和 Docker Compose。

要安装最新版本,请运行:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

(2).通过运行映像验证 Docker 引擎安装是否成功:hello-world

sudo docker run hello-world

到现在如果没有报错,说明已成功安装并启动 Docker 引擎。

4.升级Docker引擎

要升级Docker引擎,请按照https://docs.docker.com/engine/install/debian/#install-docker-engine

选择新版本,进行升级

5.卸载Docker引擎

(1).卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

(2).主机上的映像、容器、卷或自定义配置文件 不会自动移除。要删除所有映像、容器和卷,请执行以下操作:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

下面是我在按照上面步骤进行安装时遇到的问题

按上面步骤安装完docker引擎之后,启动docker引擎会报以下错误

1.首先去 /etc/init.d 看有没有docker的文件

cat docker

2.去 测定/docker.log

3.解决问题

sudo update-alternatives --config iptables
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

4.启动docker

至此,问题解决,成功启动

补充一点

使用systemctl命令管理docker报错

当你尝试使用 systemctl 命令来管理 Linux 系统上的服务的时候,如果系统中根本就没有使用 systemctl,而是(很可能)使用的 SysV init (sysvinit)命令,就会报错。

在 windows 中通过 WSL 使用的Debian,默认情况下系统使用的是 SysV 而不是 systemctl。当你使用 systemctl 命令(适用于有 systemd init 的系统)的时候,系统自然会报错。

那么怎样查看到底用的是哪个 init 系统呢?可以使用如下命令来检查 PID 为 1 的进程(即系统运行的第一个进程)名称:

ps -p 1 -o comm=

它应该在输出中显示 init 或 sysv(或类似的东西)。如上图你看到的是 init,那么你的系统就没有使用 systemd,应该使用 init 命令。

其实systemctl命令和sysvinit 命令功能相同,要修复systemctl命令报错,最简单的方式就是不使用 systemctl 命令,而是使用 sysvinit 命令。

sysvinit 也不复杂,它与 systemctl 命令的语法相似。如下表格为两个命令的对比:

相关推荐
木卫二号Coding28 分钟前
宝塔-firefox(Docker应用)-构建自己的Web浏览器
linux·docker·开源
玄德公笔记1 小时前
docker-compose搭建sfpt服务器
服务器·docker·容器·sftp·docker-compose
LYX36931 小时前
Docker 安装mysql ,redis,nacos
redis·mysql·docker
小钟不想敲代码3 小时前
Docker部署Sentinel
docker·容器·sentinel
胖毁青春,瘦解百病4 小时前
Docker镜像源设置不生效问题排查
docker·容器
嘤嘤怪呆呆狗6 小时前
【开发问题记录】使用 Docker+Jenkins+Jenkins + gitee 实现自动化部署前端项目 CI/CD(centos7为例)
前端·vue.js·ci/cd·docker·gitee·自动化·jenkins
Carry_NJ7 小时前
docker-compose样例
运维·docker·容器
梁萌12 小时前
Linux安装Docker
linux·运维·docker·helloworld·容器化部署
翱翔-蓝天12 小时前
在 CentOS 系统上安装 ClickHouse
运维·docker·容器
cdg==吃蛋糕16 小时前
docker代理配置
docker·容器·eureka