zoukankan      html  css  js  c++  java
  • IDE/docker-client 远程连接 Docker Engine(最大的好处是让 wsl+docker+虚拟机三者共存)

    更新:这篇文章价值已经不大了。因为最新版的 VMware Workstation 和 Windows 10 2004,已经支持 Vmware 虚拟机和 Hyper-V 共存了哈哈哈~
    而且 Docker Desktop for Windows 可以直接使用 WSL2 作为 Backend,也就是说所有 Windows 家庭版用户,也能无痛使用它了!喜大普奔!


    为了同时使用 wsl+虚拟机+docker,我也是折腾了好几回了,希望 wsl2+vmware 的兼容特性尽快 release 吧。。。

    Intellj/VSCode 连接本地的 Docker 基本不需要任何配置,默认直接就能连上,因此这里不再说明。

    注意:使用 Windows 的 docker build 时,一定要注意换行符的区别!!这会导致 shell 脚本无法运行。

    有很多时候我们希望能连接使用远程的 docker engine。原因有很多,比如本机性能不够啊、本机 Windows 的 VirtualBox/Vmware 和 Docker-For-Windows/WSL2(hyperv) 不兼容啊、希望快速在远程主机上部署测试容器啊等等。

    下面介绍使用各 IDE/Docker-Client 远程连接 Docker Engine 的方法:

    一、远程主机上的 Docker Engine 配置

    远程主机也可以是 VMware 虚拟机。
    windows 上可以在虚拟机内安装 docker engine,windows 本机通过下面的方法远程连接虚拟机内的 docker engine 来实现 docker/虚拟机共存。
    方便起见,虚拟机最好提前设置好静态 IP,方法请网上百度。(CentOS 和 Ubuntu 配置静态 IP 的方法不一样,请注意。)

    Docker 默认只监听本地 Unix 连接,无法远程访问。因此首先需要让 Docker Engine 监听 TCP 远程端口。修改 /etc/docker/daemon.json 中的 hosts 参数:

    {
        "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
        "oom-score-adjust": -1000,
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "50m",
          "max-file": "1"
        },
        "max-concurrent-downloads": 10,
        "max-concurrent-uploads": 10,
        "insecure-registries" : ["harbor.internal.xxx.com"],
        "registry-mirrors": [
          "https://dockerhub.azk8s.cn",
          "https://hub-mirror.c.163.com"
        ],
        "storage-driver": "overlay2",
        "storage-opts": [
          "overlay2.override_kernel_check=true"
        ]
    }
    

    主要是第一行 hosts 参数,其他参数(主要是些镜像仓库、日志大小限制等配置)可以不配,详见 DevOps-Docker

    改好后 systemctl restart docker 重启 docker engine.

    现在直接通过浏览器访问 http://<server-ip>:2375/images/json,如果返回 200,就说明配置 ok 了。

    注意:上述方法开启的 2375 端口,默认没有任何保护措施,并不安全,千万别在公网上使用!!!安全相关的设置参见 Docker Engine 远程访问安全设置

    二、本地 IDE/Docker-Client 配置

    1. Intellij 系列 IDE: Idea/Pycharm/Goland/Rider 等

    全系列 IDE 自带 Docker 插件,该插件内部使用 java 的 docker sdk 与 Docker Engine 交互,不需要单独安装 docker/docker-compose client.
    只需要给个 remote api 和 certifact 证书(用于认证)就行。

    2. Docker-Client 配置

    Docker 主要有两个客户端工具:

    1. docker-client: 就是用于执行 docker xxx 命令的程序,最常用的客户端。
    2. docker-compose: 比 docker-client 更方便,它通过 docker-compose.yml 对容器进行编排。用过的人都说好~

    那么这两个东西的安装方法如下:

    1. Linux: 参考 安装 Docker,自己剔除掉 docker-engine 的安装即可。
    2. Windows: 使用 chocolaty 安装 choco install docker-cli docker-compose 即可
      • choco 的 docker-cli 来源:StefanScherer/docker-cli-builder,是第三方编译版,非官方。
      • choco 的 docker-compose 来源: 在 docker-compose - github release ,官方包。
      • 也可以通过 pip install docker-compose 进行安装,因为 docker-compose 是纯 python 写的。
      • 不需要安装臃肿的 docker-desktop,那东西还和 vmware/virtualbox 不兼容,还只支持 windows 10 pro 以上的版本,就是个垃圾。。。

    安装好客户端后,通过环境变量设定 docker 的远程地址 DOCKER_HOST:

    # Linux 临时设置环境变量,x.x.x.x 替换成你远程主机的 IP 地址。
    export DOCKER_HOST='tcp://X.X.X.X:2375'
    
    # Windows Powershell
    $env:DOCKER_HOST = 'tcp://X.X.X.X:2375'  # 临时设置环境变量
    [Environment]::SetEnvironmentVariable("DOCKER_HOST", "tcp://X.X.X.X:2375", "User")  # 修改当前用户的环境变量,只对新进程有效
    

    然后重启 VSCode,点击左边的 Docker 插件,就可以发现插件已经连接上了哈哈。

    另外直接在 powershell 中输入 docker ps,你会发现 docker 命令也可以正常使用了。非常舒服,比用 windows-docker-desktop 舒服多了。

    我目前是本地开了一个 vmware 虚拟机,然后 windows 本机通过上述配置连接虚拟机中的 docker engine.

    3. VSCode 配置

    根据 VSCode Docs - Container Advanced - 连接远程 docker host,VSCode 的 Container 插件要求本机必须安装好 docker-clientdocker-compose.

    因此只要你的 「2. Docker-Client 配置」没有问题,你就能正常使用 VSCode 的容器插件了。

    注意:

    1. 以这种方式配置好的远程 docker-client,不能将本机文件夹映射到远程 docker engine!只能用数据卷。
  • 相关阅读:
    硬件设计:蓝牙--蓝牙射频测试
    硬件设计:逻辑电平--差分信号(PECL、LVDS、CML)电平匹配
    硬件设计:元器件--二极管
    硬件设计:逻辑电平--CML
    硬件设计:POE--POE受电设备(PD)电路工作原理
    硬件设计:逻辑电平--LVDS
    硬件设计--阻抗匹配
    硬件设计:电路防护--TVS管
    硬件设计:POE--POE基础
    硬件设计:元器件--二极管常用的七种用法
  • 原文地址:https://www.cnblogs.com/kirito-c/p/12677364.html
Copyright © 2011-2022 走看看