V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
UNIXDP
V2EX  ›  程序员

讨论 win 平台下大家使用 docker,是直接安装在 wsl2 上还是安装在 Linux 子系统上,哪个更好用呢?

  •  
  •   UNIXDP · 2023-08-04 16:29:03 +08:00 · 4904 次点击
    这是一个创建于 468 天前的主题,其中的信息可能已经有所发展或是发生改变。
    26 条回复    2024-04-02 09:44:33 +08:00
    guiyun
        1
    guiyun  
       2023-08-04 16:40:01 +08:00
    我是安装到 wsl2 上
    没法直接在 wsl2 上安装,需要改一些参数
    不过我电脑换成 mac 了,就不知道现在可以直接安装了不

    我顺便留一下 wsl2 直接安装启动不起 docker 的解决方法
    https://www.guiyunweb.com/archives/wsl2docker%E5%90%AF%E5%8A%A8%E4%B8%8D%E8%B5%B7%E6%9D%A5
    Alphagocc
        2
    Alphagocc  
       2023-08-04 16:49:31 +08:00   ❤️ 2
    wsl2==linux 子系统
    cpstar
        3
    cpstar  
       2023-08-04 16:51:41 +08:00
    似乎,如果以 linux 模式运行 docker ,实际上还是会调用 wsl 的东西搞,而且 cmd 和 wsl 的 docker 是相通的
    如果是以 win 模式运行,那会生成一个 hyperv 的 windows 虚拟机
    yinmin
        4
    yinmin  
       2023-08-04 16:52:43 +08:00 via iPhone
    开发环境直接安装 docker 用默认的;生产环境推荐 hyper-v + debian + docker
    shyrock
        5
    shyrock  
       2023-08-04 17:00:21 +08:00
    除了 wsl1&2 ,还有啥 linux 子系统?
    jayeli
        6
    jayeli  
       2023-08-04 17:10:53 +08:00
    wsl2

    先启用 systemd
    cat <<'EOF' >/etc/wsl.conf
    [boot]
    systemd=true
    EOF

    再根据 docker 官方的文档 https://docs.docker.com/engine/install/ ,找到对应的 Linux 发行版安装就可以了

    最后 systemctl enable --now docker

    如果你想使用 docker desktop ,可以看这里 https://docs.docker.com/desktop/install/windows-install/ ,使用 wsl2 作为 backend ,我用不惯后来就卸载了。
    chinalichen
        7
    chinalichen  
       2023-08-04 17:11:44 +08:00   ❤️ 1
    wsl2 虽然可以装 docker ,但是很难用,主要是稳定性跟 linux 下的差别巨大,尤其是内存管理,经常会 OutOfMemory 。后续换了 linux 虚拟机后装 docker ,整个世界都变得好起来了。
    chinalichen
        8
    chinalichen  
       2023-08-04 17:12:54 +08:00
    @chinalichen linux 虚拟机使用的是 vmware
    ysc3839
        9
    ysc3839  
       2023-08-04 20:42:12 +08:00 via Android
    我一般用 VMware 装个 Ubuntu Server 在里面跑 Docker ,或者一些简单的测试就直接用 VMware 的 vctl
    Rennen
        10
    Rennen  
       2023-08-04 20:46:52 +08:00
    买台 VPS 更好用
    UNIXDP
        11
    UNIXDP  
    OP
       2023-08-04 21:09:54 +08:00
    @Alphagocc 我的意思实际上是 wsl2 上安装一个 docker 桌面还是直接在 linux 子系统比如 ubuntu 上安装一个 docker 引擎
    UNIXDP
        12
    UNIXDP  
    OP
       2023-08-04 21:11:36 +08:00
    @chinalichen 折腾了一个下午我也决定改用虚拟机了
    bitcapybara
        13
    bitcapybara  
       2023-08-04 21:12:34 +08:00 via iPhone
    都 wsl 了,可以直接用 podman 呀
    cpstar
        14
    cpstar  
       2023-08-04 21:18:24 +08:00
    缓缓的打出一个问号,问什么要套娃?难道不知道 docker for windows ?然后如果使用 linux 内核,就是 wsl 那套东西,如果使用 windows 内核就是 hyperv 的一个 win 虚拟机(包括 windows sandbox 也是 hyperv 的一个虚拟机)
    studyrun
        15
    studyrun  
       2023-08-04 21:53:39 +08:00
    VMware 虚拟机,对 hyper-v 这套一点好感都没,问题太多了,网络、端口问题,内存占用,主机被虚拟化。。。
    mohumohu
        16
    mohumohu  
       2023-08-04 22:00:55 +08:00
    用 Windows docker desktop 就是 wsl2 的啊,他是单独塞了一个 wsl2 发行版进去,而且在 cmd 下运行是 exe ,在其他 wsl2 下运行直接是 docker ,很好用的,如果你是用来构建测试的话。如果你打算是用来当服务器跑的话,还是直接 hyper-v 起一个虚拟机跑最好
    mikewang
        17
    mikewang  
       2023-08-04 22:02:37 +08:00
    WSL2 + podman
    如果习惯 docker 命令还能用 podman-docker 兼容一下
    mmdsun
        18
    mmdsun  
       2023-08-05 00:21:24 +08:00 via iPhone
    Windows 直接安装 docker desktop ,然后打开启用 WSL 2 的选项。
    ShadowPower
        19
    ShadowPower  
       2023-08-05 10:27:53 +08:00
    我在 2017 年的时候整的方案:

    装 Hyper-V 上,用 WSL 1

    .bashrc 里这样配置:

    # connent to Docker for Windows
    export DOCKER_HOST=tcp://127.0.0.1:2375

    # mount /mnt/c to /c if not already done
    if [ ! -d "/c" ] || [ ! "$(ls -A /c)" ]; then
    sudo mkdir -p /c
    sudo mount --bind /mnt/c /c
    fi

    if [ ! -d "/d" ] || [ ! "$(ls -A /d)" ]; then
    sudo mkdir -p /d
    sudo mount --bind /mnt/d /d
    fi

    # 其他磁盘分区以此类推……

    # Change from /mnt/c/... to /c/...
    if [ "$(pwd | cut -c -7)" == "/mnt/c/" ] || [ "$(pwd | cut -c -7)" == "/mnt/d/" ]; then
    cd "$(pwd | cut -c 5-)"
    fi
    newbee2000
        20
    newbee2000  
       2023-08-05 10:32:29 +08:00 via iPhone
    直接安装 Windows for docker
    piaofeifengxinzi
        21
    piaofeifengxinzi  
       2023-08-05 10:44:45 +08:00
    vscode remote 开发,直接随时随地,有电脑就能肝心爱的代码
    documentzhangx66
        22
    documentzhangx66  
       2023-08-05 13:17:38 +08:00
    docker 是 linux 上的玩意,别折腾 windows
    lujiaosama
        23
    lujiaosama  
       2023-08-05 17:34:58 +08:00
    @newbee2000 这个也是 HYPER-V, 和 WSL2 没有本质不同.
    canbingzt
        24
    canbingzt  
       2023-08-05 18:10:04 +08:00 via iPhone
    @jayeli 我启用 systemd 后,然后启动 docker ,过一会 wsl 就会自动关闭了,但是不起用 systemd 就没事
    jayeli
        25
    jayeli  
       2023-08-07 14:24:07 +08:00
    @canbingzt 没遇到过,奇怪🤔
    Subfire
        26
    Subfire  
       226 天前
    如果是为了在 Windows 上 使用 Linux 系统.
    有一种方式是: 在 Windows 上安装 Docker 然后在 Docker 中安装的 Linux, Linux 中一般需要安装各种工具(比如 Redis/MySQL), 这种方式是不太推荐

    官网有说明:
    Remember one point that the host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:06 · PVG 02:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.