【问题标题】:How to run docker with experimental functions on Ubuntu 16.04如何在 Ubuntu 16.04 上运行具有实验功能的 docker
【发布时间】:2017-11-04 21:24:10
【问题描述】:

我有以下问题:

如何在 ubuntu 16.04 上运行具有实验性功能的 docker(例如图像压缩 docker build --squash=true... 以减小其大小)?

【问题讨论】:

    标签: docker ubuntu-16.04


    【解决方案1】:

    要打开实验性 docker 功能,请通过以下方式创建以下文件:

    sudo nano /etc/docker/daemon.json

    并添加以下内容

    { 
        "experimental": true 
    } 
    

    并保存文件(通过 CTRL+X 和 Enter )并退出。在终端类型中:

    sudo service docker restart

    要检查实验功能是否开启,请输入终端:

    docker version

    你应该看到Experimental: true

    更新

    您可以使用以下单线代替 nano

    echo $'{\n    "experimental": true\n}' | sudo tee /etc/docker/daemon.json
    

    【讨论】:

    • 请注意单行更新的局限性:它试图“追加”,但是如果您实际上已经有一个配置文件,它将破坏文件格式。
    • sudo sh -c 'echo "$(cat /etc/docker/daemon.json) {\"experimental\": true}" |jq -s add |sponge /etc/docker/daemon .json && 服务泊坞窗重启'
    • fyi- 要为客户端启用此功能,要创建的配置文件是 ~/.docker/config.json,值是 "enabled",而不是 true
    • 不确定,但我认为sudo service docker restart 会关闭所有正在运行的 docker 容器,请小心
    【解决方案2】:

    我在我的 mac 上的 Ubuntu 18.04 VM 上尝试了这里的一切——没有任何效果。整个互联网都在说同样的话,但最终得到实验性开启的一件事是@Michael Haren 的小回答:

    fyi- 要为客户端启用此功能,要创建的配置文件是 ~/.docker/config.json,值是 "enabled",而不是 true

    这对我来说意味着这样的事情:

    $ mkdir ~/.docker
    $ echo '{ "experimental": "enabled" }' > ~/.docker/config.json
    $ sudo systemctl restart docker
    $ docker version
      ...
      Experimental: true
      ...
    

    这应该是一个顶级答案。所以,感谢他们(对我来说,除了甜蜜的互联网业力点......)。

    【讨论】:

    • 不幸的是,这在 Ubuntu 20.04 上不起作用,但是@Kamil 的回答确实如此。
    • 请注意,OP 指定了 16.04,因此它可能在 16.04 中工作,或者可能在 2020 年 3 月发布答案时工作。
    • 这是最佳答案!
    【解决方案3】:

    如果你只想临时运行它/不修改文件,你可以export DOCKER_CLI_EXPERIMENTAL=enabled。下面为您的客户端打开实验模式。

    $ docker version
     Experimental:      false
    $ export DOCKER_CLI_EXPERIMENTAL=enabled
    $ docker version
     Experimental:      true
    

    【讨论】:

      【解决方案4】:

      发布此内容以帮助那些在 macOS 上运行 docker 的人

      您需要在两个文件上启用实验,一个是客户端,另一个是 docker 引擎

      我建议手动打开文件,而不是直接回显到文件中,因为该文件可能有一些其他配置,您可能不想意外覆盖它们

      对于客户端,请访问~/.docker/config.json,并在顶级配置中添加"experimental": "enabled",如下所示

      {
        "experimental" : "enabled",
        "auths" : {
          "harbor.xxx.com" : {
      
          }
        },
        "credsStore" : "desktop"
      }
      

      对于 Docker 引擎,请访问 ~/.docker/daemon.json 并在顶级配置中添加 "experimental": true,如下所示

      {
        "features": {
          "buildkit": true
        },
        "experimental": true,
        "builder": {
          "gc": {
            "defaultKeepStorage": "20GB",
            "enabled": true
          }
        }
      }
      
      

      请注意experimental 的“值”在客户端和服务器之间是不同的。

      完成后,使用以下命令重新启动 docker

      killall Docker && open /Applications/Docker.app
      

      然后验证结果

      docker version
      

      【讨论】:

        【解决方案5】:
        sudo sed -i 's/ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ --containerd=\/run\/containerd\/containerd.sock/ExecStart=\/usr\/bin\/dockerd -H fd:\/\/ --containerd=\/run\/containerd\/containerd.sock --experimental/g' /lib/systemd/system/docker.service
        sudo systemctl daemon-reload
        sudo systemctl restart docker
        

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        【解决方案6】:

        我认为您可以在 Linux 上使用systemctl 解决此问题,如此 SO 上的https://stackoverflow.com/a/70460819/433814 所述。但是,首先您需要编辑正确的文件...如果您正在寻找类似的答案,这是在 MacOS 中设置它的方法。

        Docker 使用 Experiments MacOS 运行

        • 只需设置变量ENABLED=trueENABLED=false,此脚本将自动打开或关闭它,写入文件

        注意:您必须安装 jq 才能就地执行和更新。

        ENABLED=true; \
        
        CONFIG=~/.docker/config.json; DAEMON=~/.docker/daemon.json ; \
        
        cat <<< $(jq --argjson V ${ENABLED} '.experimental = $V' ${DAEMON}) > ${DAEMON} ; \
        cat <<< $(jq --arg V $(if [ "${ENABLED}" = "true" ]; then echo "enabled"; else echo "disabled"; fi) '.experimental = $V' ${CONFIG}) > ${CONFIG} ; \ 
        
        cat ~/.docker/config.json ; \
        cat ~/.docker/daemon.json
        

        输出确认

        • 这将自动输出确认
        {
          "auths": {
            "https://index.docker.io/v1/": {},
            "registry.gitlab.com": {}
          },
          "credsStore": "desktop",
          "experimental": "enabled",
          "currentContext": "default"
        }
        {
          "builder": {
            "gc": {
              "defaultKeepStorage": "20GB",
              "enabled": true
            }
          },
          "experimental": true,
          "features": {
            "buildkit": true
          }
        }
        

        在 MacOS 中重启 Docker 引擎

        • 只需运行以下命令
        killall Docker && open /Applications/Docker.app
        

        参考文献

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-29
          • 1970-01-01
          • 2016-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-07
          相关资源
          最近更新 更多