标签: docker-daemon

Docker 远程守护程序 (TCP):无法连接到 Docker 守护程序

我正在尝试通过 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)

可能的原因是什么?寻找解决方案的正确调试方法是什么?

  • 系统:Ubuntu 18.04(客户端和主机)
  • ufw:为所有传入和传出启用(用于测试目的)
  • 访问权限:在客户端和主机上使用 root

我做了什么

在主机上:

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)

tcp docker ubuntu-18.04 docker-daemon

5
推荐指数
1
解决办法
4554
查看次数

在 docker 上启用实时恢复并不能让容器保持活动状态

我阅读了启用实时恢复,但是当我尝试它时。

\n
ubuntu@ip-10-0-0-230:~$ cat /etc/docker/daemon.json \n{\n  "live-restore": true\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我以分离模式启动了一个 nginx 容器。

\n
sudo 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\n
Run Code Online (Sandbox Code Playgroud)\n

然后我停止了dockerd

\n
sudo systemctl stop snap.docker.dockerd.service\n
Run Code Online (Sandbox Code Playgroud)\n

我检查了没有容器在运行

\n
ps aux | grep nginx\n
Run Code Online (Sandbox Code Playgroud)\n

之后,我重新启动了 docker 服务,仍然没有任何容器。

\n

任何想法?“启用实时恢复”如何工作?

\n

ubuntu service docker snapcraft docker-daemon

5
推荐指数
1
解决办法
7717
查看次数

是否可以在 docker daemon 配置文件中使用环境变量

背景:

\n\n

我们在文件中使用registry_mirrors&insecure_registries选项docker daemon.json。我们想停止设置mirrors 硬编码的位置。

\n\n

问题

\n\n

env variable里面可以用吗daemon.json?因此,ip X.Y.Z.W:PORT我们不应该写,而应该写 ${REPO1}. 希望可以REPO1在不重新启动的情况下更改 vardaemon

\n\n

评论

\n\n

该解决方案必须允许在不重新启动守护程序的情况下更改repo位置

\n\n

编辑

\n\n

无法在 daemon.json\n1 中使用以下内容。${VAR_NAME}

\n\n

可能的解决方法

\n\n

使用自定义主机名并在/etc/hosts. 这允许在不重新启动守护进程的情况下更改存储库ip它不允许改变portprotocol

\n\n

可能的解决方法2

\n\n
\n

某些选项可以在守护程序运行时重新配置,而无需重新启动进程。我们在 Linux 中使用 SIGHUP 信号来重新加载,在 Windows 中使用全局事件,键为 Global\\docker-daemon-config-$PID。可以在配置文件中修改这些选项,但仍会检查与提供的标志是否存在冲突。如果存在冲突,守护进程将无法重新配置自身,但它不会\xe2\x80\x99t停止执行

\n
\n\n

因此可以编辑registry和 dosudo systemctl …

docker docker-registry docker-registry-mirror docker-daemon

5
推荐指数
0
解决办法
607
查看次数

使用 Spring Boot Gradle 插件和 Colima 构建 Docker 映像

我正在尝试使用 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文件中进行任何配置吗?

gradle docker spring-boot docker-daemon colima

5
推荐指数
1
解决办法
2839
查看次数

Docker 守护进程未在 Windows 11 上运行

我是 Docker 的初学者,我使用的是 Windows 11,每当我尝试打开 docker 桌面时它都打不开。 在此输入图像描述 每当我尝试运行docker psdocker images 与 docker 相关的任何内容时,它总是显示此错误 在此输入图像描述 谁能帮忙

我已打开 hyper-v、wsl 等,但似乎不起作用

docker docker-daemon

5
推荐指数
2
解决办法
7261
查看次数

dockerd 命令中开关 --containerd 的用途是什么?

如果我运行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 docker-daemon

4
推荐指数
1
解决办法
4641
查看次数

PyCharm 无法连接到 Docker,认为 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、相同的操作系统。我上线了

  • Python 社区版 2021.2.3
  • Docker 版本 20.10.22,内部版本 3a2c30b
  • Mac OSX 文图拉 13.1

我尝试过重新启动系统。

关于什么被破坏了有什么想法吗?

macos pycharm docker docker-daemon

4
推荐指数
1
解决办法
945
查看次数

从 spring maven 项目为arm64平台构建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)

我的项目结构是:

标准maven结构

在终端中,在同一个 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)

maven docker spring-boot arm64 docker-daemon

3
推荐指数
1
解决办法
4565
查看次数

处理 docker 桌面的 daemon.json 有点混乱

我需要编辑我的 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)

docker docker-desktop docker-daemon

1
推荐指数
1
解决办法
1983
查看次数