我正在尝试通过 TCP 将 docker 守护程序从客户端连接到远程主机,但出现此错误:
docker -H tcp://{{HOST_IP}}:2375 ps
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
Run Code Online (Sandbox Code Playgroud)
可能的原因是什么?寻找解决方案的正确调试方法是什么?
我做了什么
在主机上:
systemctl edit docker.service
Run Code Online (Sandbox Code Playgroud)
添加并保存这些行:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
Run Code Online (Sandbox Code Playgroud)
重新加载守护进程:
systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
重启泊坞窗:
systemctl restart docker.service
Run Code Online (Sandbox Code Playgroud)
检查它是否有效:
netstat -lntp | grep dockerd
Run Code Online (Sandbox Code Playgroud)
结果:
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
Run Code Online (Sandbox Code Playgroud)
用 docker 测试:
docker -H tcp://127.0.0.1:2375 ps
Run Code Online (Sandbox Code Playgroud)
一切都在主机上工作。但是,当我尝试从客户端连接到远程主机时,出现错误。
在客户端:
docker -H tcp://{{HOST_IP}}:2375 ps
Cannot connect to the Docker …Run Code Online (Sandbox Code Playgroud) 我阅读了启用实时恢复,但是当我尝试它时。
\nubuntu@ip-10-0-0-230:~$ cat /etc/docker/daemon.json \n{\n "live-restore": true\n}\nRun Code Online (Sandbox Code Playgroud)\n我以分离模式启动了一个 nginx 容器。
\nsudo docker run -d nginx\nc73a20d1bb620e2180bc1fad7d10acb402c89fed9846f06471d6ef5860f76fb5 \n\n\n$sudo docker ps\n\nCONTAINER ID IMAGE COMMAND CREATED STATUS \n \nc73a20d1bb62 nginx "nginx -g \'daemon of\xe2\x80\xa6" 5 seconds ago Up 4 \nseconds\nRun Code Online (Sandbox Code Playgroud)\n然后我停止了dockerd
\nsudo systemctl stop snap.docker.dockerd.service\nRun Code Online (Sandbox Code Playgroud)\n我检查了没有容器在运行
\nps aux | grep nginx\nRun Code Online (Sandbox Code Playgroud)\n之后,我重新启动了 docker 服务,仍然没有任何容器。
\n任何想法?“启用实时恢复”如何工作?
\n我们在文件中使用registry_mirrors&insecure_registries选项docker daemon.json。我们想停止设置mirrors 硬编码的位置。
env variable里面可以用吗daemon.json?因此,ip X.Y.Z.W:PORT我们不应该写,而应该写 ${REPO1}. 希望可以REPO1在不重新启动的情况下更改 vardaemon
该解决方案必须允许在不重新启动守护程序的情况下更改repo位置
无法在 daemon.json\n1 中使用以下内容。${VAR_NAME}
\n\n使用自定义主机名并在/etc/hosts. 这允许在不重新启动守护进程的情况下更改存储库ip。但它不允许改变port或protocol
\n\n\n某些选项可以在守护程序运行时重新配置,而无需重新启动进程。我们在 Linux 中使用 SIGHUP 信号来重新加载,在 Windows 中使用全局事件,键为 Global\\docker-daemon-config-$PID。可以在配置文件中修改这些选项,但仍会检查与提供的标志是否存在冲突。如果存在冲突,守护进程将无法重新配置自身,但它不会\xe2\x80\x99t停止执行源
\n
因此可以编辑registry和 dosudo systemctl …
我正在尝试使用 Gradle 插件创建 Spring Boot 应用程序的 docker 映像。我正在使用 Spring Boot 2.6.4 和 Gradle 7.1.1。
我使用的是 Mac,并且没有安装 Docker Desktop。事实上,我使用 Colima 运行 docker。
问题是我无法使用以下命令构建 docker 映像,./gradlew bootBuildImage因为 Gradle 找不到 docker 守护进程:
Connection to the Docker daemon at 'localhost' failed with error "[2] No such file or directory"; ensure the Docker daemon is running and accessible
Run Code Online (Sandbox Code Playgroud)
我需要在 Colima 或我的build.gradle文件中进行任何配置吗?
我是 Docker 的初学者,我使用的是 Windows 11,每当我尝试打开 docker 桌面时它都打不开。
每当我尝试运行docker ps或docker images
与 docker 相关的任何内容时,它总是显示此错误
谁能帮忙
我已打开 hyper-v、wsl 等,但似乎不起作用
如果我运行systemctl cat docker.service查看docker.service的unit文件,
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock可以在docker默认的unit文件中找到。
我的问题是切换的目的是什么
--containerd=/run/containerd/containerd.sock?
根据这个问题的答案,如果我为 docker.service 生成一个覆盖文件,内容为:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd://
Run Code Online (Sandbox Code Playgroud)
有效的配置是:
[Service]
ExecStart=/usr/bin/dockerd -H fd://
Run Code Online (Sandbox Code Playgroud)
并将--containerd=/run/containerd/containerd.sock被省略。
那么这样的配置会导致什么情况呢?我希望docker能够在启用TLS保护的情况下在本地和远程正常工作。我还需要通过 ssh 调用 docker 守护进程。
先感谢您。
Docker 的 PyCharm 接口突然停止在我的 Mac 上工作。当我尝试连接到 Docker 时,收到错误消息“无法连接到位于 unix:///var/run/docker.sock 的 Docker 守护进程。docker 守护进程正在运行吗?”。
Docker 似乎工作正常。docker info返回合理的结果。Docker 桌面正在运行。我可以通过 Docker Desktop 启动一个容器并连接到它。基巴纳可以工作。唯一看起来奇怪的是它/var/run/docker.sock并不存在。
docker.sock难道是一个不存在的问题吗?
Docker 的 PyCharm 配置如下所示:
我没有改变它,因为一切正常。
一个常见的解决方案建议在线更改文件的权限/var/run/docker.sock,但显然我不能这样做。有各种各样的事情可以尝试,但大多数都需要 sudo,而我在这台机器上没有管理员权限。有一个 Stack Overflow 问题描述了相同的情况,但问题是 Docker 无法在没有 sudo 的情况下运行,但这里不是这种情况。
特别奇怪的是,几天前它还可以工作,据我所知,机器上没有任何变化。相同的 PyCharm 设置、相同的 Docker、相同的操作系统。我上线了
我尝试过重新启动系统。
关于什么被破坏了有什么想法吗?
我正在学习 Spring 课程,并且我有一个从 Spring Initializr 构建的 Maven 应用程序(从课程资源下载)。mvn spring-boot:build-image我可以使用(项目中没有 Dockerfile)构建本地 Docker 映像。默认情况下,Docker 映像构建为 linux/amd64,但我正在使用 M1 Apple Silicon 芯片 (arm64)。我一直在寻找很多解决方法,但没有成功。最后,我发现也许可以添加一个 Dockerfile 并指定相应的平台来构建镜像。
我的目标是为arm64架构构建一个docker镜像。
所以,我创建了一个 Dockerfile:
FROM --platform=linux/arm64 maven:3.8.4-jdk-11 AS build
COPY src /home/path_to_app/src
COPY pom.xml /home/path_to_app
RUN mvn -f /home/path_to_app/pom.xml spring-boot:build-image -DskipTests
Run Code Online (Sandbox Code Playgroud)
我的项目结构是:
在终端中,在同一个 pom.xml 目录中我运行:docker buildx build --platform linux/arm64 --tag <mytag> .
记录成功直到 =>Building image 'docker.io/myusername/myimage:mytag',然后发生异常并且构建失败。
#8 125.7 [INFO]
#8 125.7 [INFO] <<< spring-boot-maven-plugin:2.5.0:build-image (default-cli) < package @ currency-exchange-service <<<
#8 125.7 [INFO]
#8 125.7 [INFO] …Run Code Online (Sandbox Code Playgroud) 我需要编辑我的 docker 守护进程的配置,从我读到的内容来看,我“可以”使用 2 个(?)?
一条路径:
C:\ProgramData\Docker\config\daemon.json
Run Code Online (Sandbox Code Playgroud)
其他路径:
C:\Program Files\Docker\Docker\resources\windows-daemon-options.json
Run Code Online (Sandbox Code Playgroud)
第一个问题:
windows-daemon-options.json已经存在,在有数据(更多,下面)daemon.json不存在; 我必须创造它所以,我是只是编辑windows-daemon-options.json,还是创建daemon.json,或者只是在我的编辑中进行,然后在守护程序启动时,它会使用前者作为“基本”配置,并只覆盖后者添加的设置? 或者我是否将所有设置从前者复制/粘贴到后者,编辑我需要的内容,然后在启动时它将使用常规daemon.json作为首选配置(有点像前者是示例配置)?
第二个问题:
中的数据windows-daemon-options.json有很多“编辑”,我想知道所有这些数字是如何计算的?
即这是其中的数据(字面意思):
{
"allow-nondistributable-artifacts": ["host_port_or_cidr|redacted"],
"authorization-plugins": [],
"bridge": "",
"cluster-advertise": "",
"cluster-store": "",
"data-root": "path|redacted",
"debug": true,
"default-ulimits": {},
"disable-legacy-registry": false,
"dns": ["ip|redacted"],
"dns-opts": [],
"dns-search": ["domain|redacted"],
"exec-opts": [],
"experimental": true,
"fixed-cidr": "redacted",
"graph": "deprecated|redacted",
"group": "",
"hosts": ["endpoint|redacted"],
"insecure-registries": ["host_port_or_cidr|redacted"],
"labels": [],
"live-restore": true,
"log-driver": "",
"log-level": "", …Run Code Online (Sandbox Code Playgroud)