.. _config_docker_deamon_rancher_desktop: ======================================= 配置Rancher Desktop的Docker Daemon ======================================= .. note:: `Configuring Docker Daemon in Rancher Desktop: A Complete Guide `_ 提供了通过修改Host主机 ``~/.rancher-desktop/lima/_config/docker/daemon.json`` 来调整 ``Rancher Desktop`` Lima 虚拟机的 ``docker daemon`` 配置方法。我这里实践时采用了直接修改虚拟机内部配置,所以原文方法记录备参考。 原文提供了一些 :ref:`docker` 配置调整的参数设置,也可以参考(我未实践) .. _rancher_desktop_docker_daemon_proxy: 配置Rancher Desktop虚拟机Docker服务代理 ========================================== 在墙内使用 :ref:`docker` 最大的问题是GFW屏蔽了docker registry,这导致很多公共镜像无法下载。在使用Rancher Desktop的时候,特别是需要下载 :ref:`alpine_docker_image` 时,遇到报错: .. literalinclude:: config_docker_deamon_rancher_desktop/registry_fail 解决方法是调整 :ref:`docker` 代理,这里首先需要配置的是服务器端代理 ``docker daemon`` 由于是使用 :ref:`rancher_desktop` 包装了 :ref:`lima` 虚拟化,所以我采用了直接调整 ``lima`` 虚拟机内部的 ``/etc/docker/daemon.json`` : .. literalinclude:: config_docker_deamon_rancher_desktop/daemon.json :caption: 配置 ``lima`` 虚拟机内部 ``/etc/docker/daemon.json`` :emphasize-lines: 5-9 .. note:: 另一个配置方法是在Host主机上配置 ``~/.rancher-desktop/lima/_config/docker/daemon.json`` ,让 ``Rancher Desktop`` 启动lima虚拟机的时候自动复制进去。不过,我没有实践,请参考原文 `Configuring Docker Daemon in Rancher Desktop: A Complete Guide `_ 这里解决了服务端dockerd通过代理防伪registry之后,我又遇到另外一个报错: .. literalinclude:: config_docker_deamon_rancher_desktop/proxyconnect_tls_handshake_fail :caption: 通过代理访问registry报告TLS握手错误 :emphasize-lines: 14 乌龙了,原来是我配置 ``daemon.json`` 错误,我的 :ref:`squid` 代理服务是 HTTP 方式,所以设置 docker daemon 时候不能设置 ``"https-proxy": "https://192.168.1.20:3128"`` ,而应该是 ``"https-proxy": "http://192.168.1.20:3128"`` .. _rancher_desktop_docker_client_proxy: 配置Rancher Desktop虚拟机Docker客户端代理 ========================================== 需要注意的是,docker下载镜像不仅是 docker dameon 需要配置代理,docker client也需要配置代理,否则会提示另一个访问 auth.docker.io 错误: .. literalinclude:: config_docker_deamon_rancher_desktop/docker_client_auth_fail :caption: docker客户端访问auth服务错误 :emphasize-lines: 14 解决方法类似服务端,只不过这次是配置docker客户端 ``~/.docker/config.json`` : .. literalinclude:: config_docker_deamon_rancher_desktop/docker_client_config.json :caption: docker客户端配置代理 :emphasize-lines: 3-9 .. warning:: 非常奇怪,这次在Rancher Desktop上实践遇到了问题,配置上述 ``~/.docker/config.json`` 没有生效,客户端依然是直接访问网络 所以最终我改成在客户端设置环境变量来解决: .. literalinclude:: config_docker_deamon_rancher_desktop/docker_client_env :caption: 在客户端设置环境变量配置代理 参考 ====== - `Configuring Docker Daemon in Rancher Desktop: A Complete Guide `_