这是我的设置:
Windows 10 PRO - build 19041.153
- 内部程序 - 慢环Ubuntu 18.04LTS
WSL2 模式下的子系统Docker for desktop 2.2.0.4
- 启用与我的 Ubuntu 子系统的 WSL2 集成我目前被迫使用Windows进行开发,所以我成为了microsoft Insider成员并以WSL2模式安装了ubuntu。Docker 桌面支持 WSL2 的集成,所以我尝试了......一周以来它完美无缺。今天电脑重启后,我无法再次运行docker。Ubuntu 可以看到从 Docker 桌面注入的二进制文件,但它无法再连接到 Windows 托管的 docker 守护进程。
当我调用 subsys 终端时,docker info
它返回
$ docker info
Client:
Debug Mode: false
Server:
ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
errors pretty printing info
Run Code Online (Sandbox Code Playgroud)
或与 docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost …
Run Code Online (Sandbox Code Playgroud) docker windows-subsystem-for-linux docker-desktop docker-daemon wsl-2
我想通过 PyCharm 连接到在 WSL2 中运行的 Docker TCP 套接字。我似乎无法公开套接字,我想可能是因为 WSL2 (systemctl) 中对 docker-daemon 的控制有限?我无法使用 Docker Desktop,因为我需要 GPU 支持(Windows Dev Channel + nvidia-docker)。我尝试过以下方法:
$ export DOCKER_HOST=tcp://0.0.0.0:2375
$ sudo service docker restart
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST based configuration tcp://0.0.0.0:2375 swarm
Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.
$ curl --unix-socket /var/run/docker.sock http:/localhost/version
{"Platform":{"Name":"Docker Engine …
Run Code Online (Sandbox Code Playgroud) 我按照此处文档中提供的步骤为 docker api 添加 tls 安全性。证书位于~/.docker/以及/etc/ docker /ssl/文件夹中。我将override.conf添加到/etc/systemd/system/docker.service.d/与内容
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem
Run Code Online (Sandbox Code Playgroud)
然后,我使用了 daemon-reload 和 docker start
$ systemctl daemon-reload
$ service docker start
Run Code Online (Sandbox Code Playgroud)
journalctl -xe 中的错误是:
-- Unit docker.socket has finished starting up.
--
-- The start-up result is RESULT.
Jan 15 21:43:24 cynicalplyaground systemd[1]: docker.service: Start request repeated too quickly.
Jan 15 21:43:24 cynicalplyaground systemd[1]: docker.service: Failed with result 'exit-code'.
Jan 15 …
Run Code Online (Sandbox Code Playgroud) 我使用 minikube 设置了 2 个 k8s 环境。一张带--container-runtime=docker
旗帜,一张带--container-runtime=containerd
旗帜。这是我看到的差异。
当我设定时container-runtime=docker
,这些事情就会发生
dockerd
服务正在运行dockerd
生成containerd
/usr/bin/containerd-shim-runc-v2
进程运行实际的容器,每个进程的父进程containerd-shim-runc-v2
在系统上都是 PID 1。当我设定时container-runtime=containerd
,这些事情就会发生
dockerd
服务,没有任何含糊之处。containerd
进程,其所有者为 PID 1。同样,这并不奇怪。containerd-shim
进程运行实际的容器,每个containerd-shim
进程的父进程是containerd
这是我的问题
containerd-shim
和之间有什么区别containerd-shim-runc-v2
?他们似乎大多采用相似的旗帜等。编辑:刚刚想到编辑。在ubuntu 20机器上,如果我安装docker,dockerd是一个单独的进程,其父进程是PID 1,containerd是一个单独的进程,其父进程是PID 1,所有容器都是container-shim-runc-v2的子进程,其PID为1 ?!?!为什么不是containerd
孩子dockerd
?这是在哪里配置的?
我尝试使用 Docker Desktop for Mac(英特尔芯片)安装 Docker Desktop,但失败并出现以下错误:
\nError invoking remote method \'desktop-go-backend\': Error: {"message":"installing vmnetd: retrieving vmnetd version from /Library/LaunchDaemons/com.docker.vmnetd.plist: reading plist /Library/LaunchDaemons/com.docker.vmnetd.plist: open /Library/LaunchDaemons/com.docker.vmnetd.plist: no such file or directory\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.getValueFromPlist\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/vmnetd.go:175\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.setupVmnetd\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/vmnetd.go:85\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.ApplyCustomConfiguration\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/privileged.go:137\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.ConfigCmd.func1\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/privileged.go:59\\\\ngithub.com/spf13/cobra.(\\*Command).execute\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:940\\\\ngithub.com/spf13/cobra.(\\*Command).ExecuteC\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:1068\\\\ngithub.com/spf13/cobra.(\\*Command).Execute\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:992\\\\nmain.main\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/main.go:185\\\\nruntime.main\\\\n\\\\truntime/proc.go:250\\\\nruntime.goexit\\\\n\\\\truntime/asm_amd64.s:1598\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.setupVmnetd\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/vmnetd.go:87\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.ApplyCustomConfiguration\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/privileged.go:137\\\\ngithub.com/docker/pinata/mac/tools/install/privileged.ConfigCmd.func1\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/privileged/privileged.go:59\\\\ngithub.com/spf13/cobra.(\\*Command).execute\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:940\\\\ngithub.com/spf13/cobra.(\\*Command).ExecuteC\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:1068\\\\ngithub.com/spf13/cobra.(\\*Command).Execute\\\\n\\\\tgithub.com/spf13/cobra@v1.7.0/command.go:992\\\\nmain.main\\\\n\\\\tgithub.com/docker/pinata/mac/tools/install/main.go:185\\\\nruntime.main\\\\n\\\\truntime/proc.go:250\\\\nruntime.goexit\\\\n\\\\truntime/asm_amd64.s:1598"}\n
Run Code Online (Sandbox Code Playgroud)\n我尝试卸载并重新安装适用于 mac 的 Docker 桌面几次。它没有解决问题。然后我找到了这个答案 - Unable to finish Docker Install on Mac book Error invoking Remote method 'desktop-go-backend'
\n我尝试了命令 -brew install --cask docker
\n它说以下错误:\'/Applications/Docker.app\' 已经有一个应用程序。
\n我尝试运行命令 -
\n/Applications/Docker.app/Contents/MacOS/uninstall\n
Run Code Online (Sandbox Code Playgroud)\n并得到 zsh: 没有这样的文件或目录:/Applications/Docker.app/Contents/MacOS/uninstall
我运行命令来检查 Docker 安装在哪里
\nls -ltrh /usr/local/bin/docker\nlrwxr-xr-x 1 root …
Run Code Online (Sandbox Code Playgroud) 运行后我有以下内容firewall-cmd --get-active-zones
public
interfaces: virbr0 docker0 lxcbr0 wlan0
trusted
sources: 172.17.0.0/16 53.0.0.0/8
Run Code Online (Sandbox Code Playgroud)
这些是我从无法启动守护进程中获得的见解:初始化网络控制器时出错:创建默认“桥接”网络时出错
问题是,sudo dockerd
失败并出现错误消息,其中有
failed to start daemon: Error initializing network controller: Error creating default "bridge" network: Failed to program NAT chain: ZONE_CONFLICT: 'docker0' already bound to a zone
Run Code Online (Sandbox Code Playgroud)
如何操作该区域以便我可以启动 docker 守护进程?
编辑:这个解决方案对我有用:
sudo firewall-cmd --permanent --new-zone=docker
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=docker --add-interface=docker0
Run Code Online (Sandbox Code Playgroud) 在收到大量消息说我应该升级操作系统后,我最终决定升级到macOS Big Sur v11.6.1
。
不幸的是,docker 不再工作了。
我收到错误:
Fatal Error
Docker daemon failed to start
Run Code Online (Sandbox Code Playgroud)
和
2021-12-07T09:47:14Z dockerd time="2021-12-07T09:47:14.957430297Z" level=debug msg="Calling GET /version"
Run Code Online (Sandbox Code Playgroud)
我可以看到将Docker 重置为出厂默认设置的选项,但我害怕重置,因为这意味着我还将删除所有 docker 映像。
有没有什么简单的方法可以解决这个问题而不删除我的工作?
当我构建图像时,docker build
输出包含上下文大小,例如:
Sending build context to Docker daemon 1.315GB
[...]
Successfully built a9ec4d33e12e
Run Code Online (Sandbox Code Playgroud)
这个尺寸会影响最终图像的尺寸吗?我应该设法减少它吗?
尝试将 gitlab 中的项目转换为 docker 镜像。gitlab 是自托管的。这是我得到的错误:
Running with gitlab-runner 13.12.0 (7a6612da)
on test -KnwQXuT
Preparing the "docker" executor
ERROR: Failed to remove network for build
ERROR: Preparation failed: Got permission denied while trying to connect to the Docker daemon
socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.25/info: dial
unix /var/run/docker.sock: connect: permission denied (docker.go:858:0s)
Run Code Online (Sandbox Code Playgroud)
我添加了一个跑步者,注册了它,使用 docker 模板创建了一个 gitlab-ci.yml ,我没有修改它。作为解决方案,我chmod 666 /var/run/docker.sock
在添加跑步者之前和之后尝试过,但它不起作用。我还在运行和注册 docker runner 之前添加了 sudo 但仍然没有成功。我找到了另一个选项将我的 docker 用户添加到 docker 组,但我的所有用户都在 docker 组中。docker runner 作为 docker 镜像运行。我不知道该怎么办...请帮忙。我尝试了大约 10 天,但没有成功...提前致谢
有没有办法修改 Rancher Desktop VM 中的 docker 守护进程配置,例如添加不安全的注册表等...?
进行此类修改后,我想重新启动 docker 守护进程以应用更改。有没有办法连接到 Rancher Desktop VM?
在https://docs.rancherdesktop.io/faq中没有找到任何相关内容
docker-daemon ×10
docker ×7
windows-subsystem-for-linux ×2
wsl-2 ×2
cicd ×1
containerd ×1
docker-build ×1
gitlab ×1
macos ×1
minikube ×1
runc ×1