当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/125131.html

相关文章:

  • 百日筑基篇——python爬虫学习(一)
  • 【Spring专题】Spring之底层架构核心概念解析
  • electron 使用node C++插件 node-gyp
  • 学习Vue:使用条件渲染指令(v-if,v-else,v-show)
  • 【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
  • Redis辅助功能
  • 快手商品详情数据API 抓取快手商品价格、销量、库存、sku信息
  • linux系统部署jenkins详细教程
  • Arduino驱动BME680环境传感器(环境传感器篇)
  • 领航未来!探索开源无人机与5G组网的前沿技术
  • 分布式事务CAP与BASE简介
  • Integer中缓存池讲解
  • PHP Smarty模板如何与MVC框架集成?
  • spring cloud alibaba 应用无法注册到sentinel dashboard
  • 如何在vue3中加入markdown语法
  • R语言的物种气候生态位动态量化与分布特征模拟实践技术
  • 大数据Flink(六十一):Flink流处理程序流程和项目准备
  • C语言快速回顾(一)
  • Element Plus报错:ResizeObserver loop completed with undelivered notifications.
  • scope穿透(二)
  • 2023+HuggingGPT: Solving AI Tasks with ChatGPT and itsFriends in Hugging Face
  • Ant Design Mobile是什么?
  • 深入理解设计模式-行为型之模板(和回调区别联系)
  • LabVIEW控制通用工作台
  • 什么是事务,并发带来的事务问题以及事务隔离级别(图文详解)
  • 【MySQL】MySQL数据库的delete from table和truncate table之间的区别
  • 强制Edge或Chrome使用独立显卡【WIN10】
  • easyx图形库基础:3实现弹球小游戏
  • vue基础知识三:v-show和v-if有什么区别?使用场景分别是什么?
  • Python Opencv实践 - 图像旋转