【问题标题】:Connect to wsl2 Ubuntu docker from Windows host从 Windows 主机连接到 wsl2 Ubuntu docker
【发布时间】:2022-01-28 09:36:27
【问题描述】:

我有 Windows 10 并安装了 Docker Desktop。在他们更改了商业使用条款后,我决定删除 Docker Desktop 安装并仅使用 docker 引擎本身(因为我没有使用 GUI)。我已经在 WSL 2 下的 Ubuntu 上安装了 docker,它工作正常:

localusr@MACHINE:~$ docker context ls
NAME            DESCRIPTION                               DOCKER ENDPOINT                             KUBERNETES ENDPOINT   ORCHESTRATOR
default *       Current DOCKER_HOST based configuration   unix:///mnt/wsl/shared-docker/docker.sock                         swarm
desktop-linux                                             npipe:////./pipe/dockerDesktopLinuxEngine
Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.
localusr@MACHINE:~$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

localusr@MACHINE:~$

现在我想让我的 JetBrains IDE 连接到 Docker Engine。我有以下选择:

那么配置连接的最佳方式是什么?我可以以某种方式“创建链接”来使用Docker for Windows 选项吗?似乎它只是试图连接到npipe:////./pipe/docker_engine。或者我可以公开 TCP/SSH 端口。

我是配置 docker 的新手,所以请说明我可以使用哪个选项。

【问题讨论】:

    标签: docker ubuntu pipe windows-subsystem-for-linux wsl-2


    【解决方案1】:

    免责声明:不是专家,只是遇到了完全相同的问题,然后就这样解决了。

    默认情况下,docker 守护进程已启动,仅在 unix 套接字上公开。
    据我所知,没有办法直接在 intellij 中指定 unix 套接字,而是在 windows 部分需要一些解决方法,我不知道这需要做多少工作。

    您可以将守护进程配置为也通过 tcp 套接字公开自己,例如与 docker 桌面 (tcp://localhost:2375) 一起使用的同一 tcp 套接字。
    设置完成后,您可以再次配置 intellij 以通过 tcp 与 docker 守护进程交互。
    请注意将 docker 守护进程暴露在网络中所涉及的安全问题。

    1. 确保 docker 已安装并正常工作(即docker run hello-world
    2. 创建文件/etc/docker/daemon.json
      和: { "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }
      请注意,unix 套接字仍用于 ubuntu 中的任何 docker 操作
    3. 重启docker服务,使配置生效:sudo service docker restart
    4. 验证 docker 是否正常

    使用:
    wsl 2、ubuntu 20.04、windows 10.0.19043
    按照以下方式安装 docker:https://docs.docker.com/engine/install/ubuntu/
    警告:systemd 目前还没有完全在 wsl2 上开箱即用,因此某些选项可能不可用。

    由于 wsl2 处理 Windows 和 wsl2 之间文件传输的方式,这个新的工作流程:“ubuntu 中的 docker”可能与您之前的体验大不相同。
    您可能需要考虑将所有文件移动到 ubuntu 或通过某种方式在 windows 上运行 docker。

    【讨论】:

    • 正是我想要的!非常感谢,设法通过 tcp 连接配置它并从 JetBrains IDE 连接到 docker
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2017-04-06
    相关资源
    最近更新 更多