• 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

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

    继续在Ubuntu控制台执行

    1. # 或者可以一劳永逸选择在Windows启动
    2. /opt/distrod/bin/distrod enable --start-on-windows-boot
    3. # 此种不能在启动windows的时候启动
    4. # /opt/distrod/bin/distrod enable
    1. # 启动Docker服务
    2. sudo systemctl enable docker.service && sudo systemctl start docker.service
    3. # 或者
    4. # 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二进制文件并安装:

    1. 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
    2. 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 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 - 知乎

  • 相关阅读:
    go中的panic defer recover
    参考文献批量添加上标
    Vite-Wechat网页聊天室|vite5.x+vue3+pinia+element-plus仿微信客户端
    12.并发之ForkJoin框架详解
    padding、空洞对图片分辨率大小的影响
    【动手学深度学习】--语言模型
    Git与Git常用命令速查
    java计算机毕业设计社区卫生预约挂号系统源码+系统+mysql数据库+lw文档+部署
    清华计算几何-ConvexHull(凸包)-极点InTriangle/ToLeft Test
    3-甲氧基三苯胺,CAS号:20588-62-9
  • 原文地址:https://blog.csdn.net/cn_lyg/article/details/134261669