Wsl2 Ubuntu在不安装Docker Desktop情况下使用Docker

目录

1. 前提条件

2.安装Distrod

3. 常见问题

3.1.docker compose 问题无法使用问题

3.1. docker-compose up报错

参考文档


1. 前提条件

win10 + WSL2 + Ubuntu(截止202308最新版本是20.04.xx)

有不少的博客都是建议直接安装docker desktop,这样无论在windows下还是wsl2的Ubuntu子系统下,都可以使用docker命令。

可实际上,随着Docker desktop可能商业化,而且和windows的兼容和性能问题,越来越多公司和个人不太愿意继续安装Docker Desktop,那么Distrod将是一个不错的替代产物。

图1 Win10系统已经启用了Wsl并且子系统还是Ubuntu20.04

2.安装Distrod

打开Terminal的,进入Ubuntu控制台,直接安装Distrod

# 先创建一个目录
sudo mkdir -p ~/distrod
# 进入目标目录
cd ~/distrod
# 安装Distrod
curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
chmod +x install.sh
sudo ./install.sh install

继续在Ubuntu控制台执行

# 或者可以一劳永逸选择在Windows启动
/opt/distrod/bin/distrod enable --start-on-windows-boot

# 此种不能在启动windows的时候启动
# /opt/distrod/bin/distrod enable
# 启动Docker服务
sudo systemctl enable docker.service && sudo systemctl start docker.service


# 或者
# sudo service docker start

3. 常见问题

3.1.docker compose 问题无法使用问题

如果你已经通过Distrod在WSL2上正确安装并运行了Docker,但是Docker Compose报错,可能需要检查Docker Compose的安装版本和配置。确保已经安装了与Docker兼容的Docker Compose版本,最新的版本通常是可以的。Docker Compose的安装和Docker类似,都是直接在WSL的Ubuntu子系统中安装。

首先在WSL Ubuntu 终端中移除已安装的docker-compose:

sudo rm /usr/local/bin/docker-compose

然后下载最新版本的Docker Compose二进制文件并安装:

sudo curl -L "https://github.com/docker/compose/releases/download/2.1.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

这将在你的WSL Ubuntu子系统中安装Docker Compose的最新版本。你可以使用`docker-compose --version`来测试是否正确安装。

如果问题仍然存在,可以尝试对Docker Compose环境进行调试,或者尝试重装Distrod和Docker。在安装和使用中遇到问题时,有时候症状会模糊,无法准确诊断问题来源,因此可能需要多次尝试才能找到解决问题的方法。

另外,一种简单的尝试是安装Docker Compose作为一个python包,使用pip:

sudo pip install docker-compose

注意: 使用这种方法时,需要确保pip版本是最新的,且Python环境配置正常。 

最后,报错信息是非常有用的,在解决问题的过程中务必注意保存和参考。

3.1. docker-compose up报错

pip安装后,执行一个docker-compose.yaml后启动mysql容器,报错:

Pulling mysql8.0 (mysql:8.0.21)... Traceback (most recent call last): File "docker-compose", line 3, in <module> File "compose/cli/main.py", line 81, in main File "compose/cli/main.py", line 202, in perform_command File "compose/metrics/decorator.py", line 18, in wrapper File "compose/cli/main.py", line 1188, in up File "compose/cli/main.py", line 1184, in up File "compose/project.py", line 671, in up File "compose/service.py", line 359, in ensure_image_exists File "compose/service.py", line 1291, in pull File "compose/progress_stream.py", line 99, in get_digest_from_pull File "compose/service.py", line 1258, in _do_pull File "docker/api/image.py", line 411, in pull File "docker/auth.py", line 48, in get_config_header File "docker/auth.py", line 324, in resolve_authconfig File "docker/auth.py", line 235, in resolve_authconfig File "docker/auth.py", line 262, in _resolve_authconfig_credstore File "docker/auth.py", line 287, in _get_store_instance File "docker/credentials/store.py", line 25, in __init__ docker.credentials.errors.InitializationError: docker-credential-desktop.exe not installed or not available in PATH [11595] Failed to execute script docker-compose

这个错误是因为docker-compose试图从docker-credential-desktop获取凭据,但是失败了,因为你的环境中没有这个,原因是你的系统中并没有安装Docker Desktop。

在你的场景中,下面是解决此问题的步骤:

1. 在你的`.bashrc`或`.zshrc` 文件中添加以下环境变量:

export DOCKER_HOST=tcp://localhost:2375

这样就可以使docker和docker-compose知道在哪里寻找docker daemon。

2. 删除`~/.docker/config.json` 文件或者编辑此文件,删除里面 `"credsStore": "desktop",` 这一行。

然后运行 `source ~/.bashrc` 或者 `source ~/.zshrc` 让环境变量生效,并尝试再次运行docker-compose命令。

这样应该可以解决你的问题。

参考文档

ChatGPT

如何不安装Docker Desktop在WSL下运行Docker - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/129627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#开发的OpenRA游戏之世界存在的属性(1)

C#开发的OpenRA游戏之世界存在的属性(1) 在游戏里,由于存在雷达,那么每个物品就可以在雷达上显示出来,但是雷达上显示不同的部分物品时,会采用不同的颜色来显示,那么它又是怎么样实现这种不同物品进行不同的颜色显示呢? 可以仔细观看下图: 可以看到矿产显示为绿色,…

C语言之文件操作(剩余部分)

上篇博客字数到极限了&#xff0c;给大家把内容补充在这一篇&#xff0c;我们还剩下文件读取结束的判定和文件缓冲区的内容没有介绍&#xff0c;让我们开始下面的学习吧&#xff01; 目录 1.文件读取结束的判定 1.1feof函数 1.2ferror函数 代码示例 2.文件缓冲区 2.1fflu…

Android T 实现简易的 USB Mode Select 需求

Android T 实现 USB Mode Select 需求 一、实现效果 二、主要实现思路 在手机连接 USB 发生/取消通知的同时&#xff0c;控制弹窗 Dialog 的显示/消失。 三、主要代码实现 连接 USB 发送/取消的主要实现是在 UsbDeviceManager.java 类中。类路径如下&#xff1a; system/f…

《持续交付:发布可靠软件的系统方法》- 读书笔记(十二)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十二&#xff09; 第 12 章 数据管理12.1 引言12.2 数据库脚本化12.3 增量式修改12.3.1 对数据库进行版本控制12.3.2 联合环境中的变更管理 12.4 数据库回滚和无停机发布12.4.1 保留数据的回滚12.4.2 将应用程序部署与数…

Vue集成海康websdk实现摄像头预览

选择以及下载相应的websdk&#xff1a; 从海康开放平台下载相应的sdk&#xff0c;web3.0不支持高版本浏览器&#xff0c;web3.2需要摄像头支持摄像头取流&#xff0c;web3.3支持高版本浏览器 我这选择的是3.3的。可以先测试下开发包是否可以成功访问&#xff0c;修改用ip、户名…

visual studio 启用DPI识别功能

在开发widow程序时&#xff0c;有时必须将电脑 设置-->显示-->缩放与布局-->更改文本、应用项目的大小-->100%后&#xff0c;程序的画面才能正确运行&#xff0c;居说这是锁定了dpi的原因&#xff0c;需要启dpi识别功能。设置方法如下&#xff1a; 或者

ubuntu 16.04.5 安装 vivado 2019.1 完整编译AD9361的环境

一、前期安装 1、安装ncurses库&#xff08;已经包含了&#xff0c;其他的os需要安装&#xff09; sudo apt install libncurses5二、安装 sudo ./xsetup使用lic进行激活。 三、安装后 输入指令 sudo gedit ~/.bashrc 末尾添加 source /opt/Xilinx/Vivado/2019.1/setti…

防火防盗防小人 使用 Jasypt 库来加密配置文件

⚔️ 项目配置信息存放在哪&#xff1f; 在日常开发工作中&#xff0c;我们经常需要使用到各种敏感配置&#xff0c;如数据库密码、各厂商的 SecretId、SecretKey 等敏感信息。 通常情况下&#xff0c;我们会将这些敏感信息明文放到配置文件中&#xff0c;或者放到配置中心中。…

论文速览 | arxiv 2023, 马氏距离感知训练在分布外检测中的应用

注1:本文系“最新论文速览”系列之一,致力于简洁清晰地介绍、解读最新的顶会/顶刊论文。 OOD论文速览 | arxiv 2023, Mahalanobis-Aware Training for Out-of-Distribution Detection 该论文旨在提出一种改进的深度学习模型训练方法,以提高对分布外(OOD)样本的检测能力。…

小米智能电视投屏方法

小米智能电视也提供了投屏功能。 使用遥控器&#xff0c;在应用中找到它&#xff0c;点击进入。 小米电视支持windows笔记本&#xff0c;macbook笔记本&#xff0c;iphone手机&#xff0c;安卓手机投屏。 windows笔记本投屏 在投屏应用中找到windows投屏&#xff0c;选中开…

【经验模态分解】4.信号由时域向频域的转换

/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file 傅里叶变换与小波变换* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian&#xff08;黑曜石笔记软件&#…

亚马逊云科技实时 AI 编程助手 Amazon CodeWhisperer,开发快人一步!

近年来&#xff0c;随着 AI 技术的进步、基础设施建设的不断完善&#xff0c;AI 应用场景不断丰富&#xff0c;各类 AI 产品和工具层出不穷。其中&#xff0c;面向开发者的 AI 编程工具也在不断迭代&#xff0c;并因宣称能“帮开发者写代码”而引发关注。目前&#xff0c;可以为…

喜报!华为云金融PaaS3.0荣获“2023年应用现代化典型案例”称号

中国软件行业协会近期启动了2023“应用现代化产业实践”优秀案例征集活动&#xff0c;旨在加快推动应用现代化发展与推广应用&#xff0c;形成行业应用带动和示范作用&#xff0c;打造应用现代化软件名企、名品&#xff0c;凝聚行业资源&#xff0c;助力我国行业应用现代化高质…

使用jdk21预览版 --enable-preview

异常 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sb3: Compilation failure [ERROR] --enable-preview 一起使用时无效 [ERROR] &#xff08;仅发行版 21 支持预览语言功能&#xff09; 解决…

MIPI配置的OV5640的使用

MIPI摄像头的数据输入FPGA的数据流&#xff1a; N Lane 差分串行输入 ————串转并模块 ————字节对齐处理 ————Lane同步处理处理 ————逆转LLP:Unpacked 处理 ————Byte转Pixel处理 此后写入Wfifo并且存入DDR3。

thinkphp6 起步

1、安装 composer create-project topthink/think6.0 tp62、使用多应用模式&#xff0c;你需要安装多应用模式扩展think-multi-app composer require topthink/think-multi-app3、config/app.php中&#xff0c;将 ‘auto_multi_app’ > flase, 改为true&#xff1b; 需要自…

MySQL-基础篇

文章目录 第一章 MYSQL 概述数据库相关概念MySQL 数据库下载安装启动和停止 MySQL客户端连接解决&#xff1a;mysql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。配置 Path 环境变量解决&#xff1a;net start mysql80 发生系统错误 5。 拒绝访问。MYSQL 的…

Java自学第8课:电商项目(3) - 重新搭建环境

由于之前用的jdk和eclipse&#xff0c;以及mysql并不是视频教程所采用的&#xff0c;在后面运行源码和使用作者提供源码时&#xff0c;总是报错&#xff0c;怀疑&#xff1a; 1 数据库有问题 2 jdk和引入的jar包不匹配 3 其他什么未知的错误&#xff1f; 所以决定卸载jdk e…

STM32C8T6实现微秒延时函数delay_us

/* USER CODE BEGIN 0 */ void delay_us(uint32_t ii) {uint32_t temp;SysTick->LOADii*8;SysTick->VAL0x00;SysTick->CTRL0x01;//2号位1使用内核时钟do{tempSysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16)));SysTick->CTRL0X00;SysTic…

【学术综述】-如何写出一篇好综述-写好综述要注意的问题

文章目录 1.前置1.1 SSD 的结构1.2 FTL的架构和作用 2 动机-why&#xff1f;3 做了什么【做了哪些方面的survey】&#xff1f;4 背景知识【上下文】5 研究的问题6 每个问题对应的解决方案 从昨天晚上【2023.11.09 22:00】到今天22:29的&#xff0c;花了一天的时间在读这篇surve…
最新文章