• docker 分离engine和client


    背景

    由于我个人电脑是2020款m1,16G,256G。一方面,平时除了运行多个浏览器,还有coding 编辑器等等,内存确实很紧张。其次呢,m1 是ARM的架构,所以构建的镜像是无法在X86的机器上运行的。所以我尝试将docker引擎和client分开。

    第一步:下载二进制docker 客户端文件

    二进制client下载链接:传送门

    如果是苹果选择aarch64,进去后选择版本(我选择的是最新版本)

    第二步:安装docker

    注意:

    1、服务端安装,可以安装在自己的服务器或者其他电脑上。

    2、除了要安装docker以外,还需要开启api端口,因为客户端需要和服务端通过远程端口进行通信

    3、个人安装的最新版本

    4、注意开启2375端口,确保能telnet通

    docker安装文档:传送门

    配置远程端口:

    Docker 启动文件添加-H tcp://0.0.0.0:2375

    bash
    vim /usr/lib/systemd/system/docker.service
    bash
    ···
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target docker.socket firewalld.service containerd.service time-set.target
    Wants=network-online.target containerd.service
    Requires=docker.socket
    
    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    ### 注意这里,我复制了一行
    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
    ExecReload=/bin/kill -s HUP $MAINPID
    TimeoutStartSec=0
    RestartSec=2
    Restart=always
    
    # Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
    # Both the old, and new location are accepted by systemd 229 and up, so using the old location
    # to make them work for either version of systemd.
    StartLimitBurst=3
    
    # Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
    # Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
    # this option work for either version of systemd.
    StartLimitInterval=60s
    ···

    第三步:解压并添加环境变量

    解压文件后如下:

    添加环境变量

    注意:
    使用$PATH 命令查看环境变量

    bash
    # 查看环境变量
    $PATH
    bash
    /Users/lanjx/opt/anaconda3/bin:/Users/lanjx/.nvm/versions/node/v16.18.0/bin:....太长了,忽略
    shell
    # 将图中文件解压到环境变量对应的目录中
    sudo cp DownLoads/docker/docker /usr/local/sbin/
    sudo chmod +x /usr/local/sbin/docker
    bash
    # 添加环境变量
    vim .zshrc
    bash
    # 将下面一句添加到文件末尾
    ...
    export DOCKER_HOST=tcp://192.168.0.1:2375

    修改文件

    bash
    vim ~/.docker/config.json
    json
    {
            "auths": {                
                     "docker.cnblogs.com": {}
            },
            "credsStore": "desktop",        
            "currentContext": "default",
      			// 添加了下面这一行
            "hosts": ["tcp://192.168.0.1:2375"]
    }

    第四步:测试

    到这里基本上已经差不多了,剩下的就是补全剩余的组件即可

    bash
    docker info
    bash
    Client:
     Version:    24.0.7
     Context:    default
     Debug Mode: false
     Plugins:
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-buildx" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-buildx: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-compose" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-compose: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-dev" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-dev: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-extension" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-extension: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-init" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-init: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-sbom" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-sbom: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-scan" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-scan: no such file or directory
    WARNING: Plugin "/Users/lanjx/.docker/cli-plugins/docker-scout" is not valid: failed to fetch metadata: fork/exec /Users/lanjx/.docker/cli-plugins/docker-scout: no such file or directory
    
    Server:
     Containers: 2
      Running: 0
      Paused: 0
      Stopped: 2
     Images: 0
     Server Version: 24.0.6
     Storage Driver: overlay2
      Backing Filesystem: extfs
      Supports d_type: true
      Using metacopy: false
      Native Overlay Diff: true
      userxattr: false
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Cgroup Version: 1
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: io.containerd.runc.v2 runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
     runc version: v1.1.9-0-gccaecfc
     init version: de40ad0
     Security Options:
      seccomp
       Profile: builtin
     Kernel Version: 3.10.0-1160.80.1.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 8
     Total Memory: 15.49GiB
     Name: localhost.localdomain
     ID: 1e789c39-61f4-4269-8616-47944d1865cb
     Docker Root Dir: /data/docker
     Debug Mode: false
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Registry Mirrors:
      https://registry.docker-cn.com/
      https://docker.mirrors.ustc.edu.cn/
     Live Restore Enabled: false
    
    WARNING: API is accessible on http://0.0.0.0:2375 without encryption.
             Access to the remote API is equivalent to root access on the host. Refer
             to the 'Docker daemon attack surface' section in the documentation for
             more information: https://docs.docker.com/go/attack-surface/

    第五步:补全插件

    方法一:

    可以去github上挨个下载(这样太麻烦了,可能还上不去这个网站):传送门

    方法二:

    下载桌面版,解压开复制里面的文件
    这种方法简单粗暴,补全后删除即可

    下载链接:传送门,下载完成后,如下图:

    双击打开后,访达中会有这样一个东西。

    然后右击Docker.app,选择显示包内容,接着复制如下目录的文件到/Users/lanjx/.docker/cli-plugins(注意用户名,根据自己的实际路径来)

    接下来给权限

    bash
    sudo chmod +x /Users/lanjx/.docker/cli-plugins/*

    到这里就结束啦,重启终端,看看效果~


    __EOF__

  • 本文作者: 兰嘉轩
  • 本文链接: https://www.cnblogs.com/lanheader/p/17798929.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    学习Opencv(蝴蝶书/C++)——3. OpenCV的数据类型
    UE5_OpenCV库的加载方式
    绘图系统五:数据产生
    C语言源代码系列-管理系统之文件加密任务书
    Go的error接口
    Chromebook文件夹应用新功能
    蓝桥杯每日一题2023.11.20
    ToBeWritten之让响应团队参与并做好沟通
    ubuntu20.4 安装sogou五笔
    输出格式说明符%u
  • 原文地址:https://www.cnblogs.com/lanheader/p/17798929.html