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 命令的语法相似。如下表格为两个命令的对比:

相关推荐
程序员老油条20 小时前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
大侠锅锅1 天前
第 4 篇:策略模式实践——用统一接口管理 Docker 容器、原生进程与 K3s Pod
docker·容器·边缘计算·策略模式·iot
小蓝波1 天前
docker 的命令
java·docker·容器
2301_801184751 天前
docker 工作
java·docker·容器
至乐活着1 天前
ELK日志系统从零搭建到实战:Nginx日志采集与可视化全攻略
nginx·elk·elasticsearch·docker·日志系统
想你依然心痛1 天前
AtomCode 在 DevOps 场景中的实战:CI/CD 流水线脚本自动生成
运维·ci/cd·docker·devops·自动化部署·github actions
摇滚侠1 天前
DockerHub 在国内有没有替代
docker
是大强1 天前
Docker中文件修改的三种方法
运维·docker·容器
梦梦代码精2 天前
电商系统不是技术堆叠:LikeShop如何用分层Hold住复杂业务?
java·docker·代码规范
zhoupenghui1682 天前
【AI大模型应用开发】【项目实战】13.RAG智慧问答项目-(一)项目介绍&项目架构&项目环境配置
人工智能·docker·ai·milvus·rag·attu·rag智慧问答项目