gpt4 book ai didi

Windows 10 主页上的 Docker - 在 docker 容器内连接到 docker 引擎

转载 作者:行者123 更新时间:2023-12-02 21:14:17 28 4
gpt4 key购买 nike

在创建 Jenkins Docker 容器时,能够连接到 Docker 守护进程非常有用。这样,我可以在 Jenkins 容器中启动 docker 命令。

例如,在启动 Jenkins Docker 容器后,我想 'docker exec -it container-id bash' 并启动 'docker ps'。

在 Linux 上,您可以在/var/run/docker.sock 上使用绑定(bind)挂载。在 Windows 上,这似乎是不可能的。解决方案是使用“命名管道”。因此,在我的 docker-compose.yml 文件中,我尝试创建一个命名管道。

version: '2'
services:
jenkins:
image: jenkins-docker
build:
context: ./
dockerfile: Dockerfile_docker
ports:
- "8080:8080"
- "50000:50000"
networks:
- jenkins
volumes:
- jenkins_home:/var/jenkins_home
- \\.\pipe\docker_engine:\\.\pipe\docker_engine
# - /var/run/docker.sock:/var/run/docker.sock
# - /path/to/postgresql/data:/var/run/postgresql/data
# - etc.

使用此文件启动 docker-compose,我收到以下错误:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?



如何设置 docker-compose 文件,以便可以在启动的容器中使用 docker.sock(或 Docker)?

在 Linux 上,您可以使用卷之类的东西:/var/run/docker.sock:/var/run/docker.sock。这在 Windows 环境中不起作用。当您将此文件夹 (/var) 添加到 Oracle VM Virtualbox 时,它不会永远获得任何 IP。在许多帖子上

最佳答案

您可以在 tcp://localhost:2375 上公开守护程序在设置中没有 TLS。通过这种方式,您可以将 Jenkins 配置为使用 Docker API 而不是套接字。我鼓励你阅读 this article by Nick Janetakis about "Understanding how the Docker Daemon and the Docker CLI work together" .

然后有几个 Jenkins 的 Docker 插件允许这种连接:

enter image description here

此外,您可以在 Docker plugin documentation on wiki.jenkins.io 中找到更多信息。 :

def dockerCloudParameters = [
connectTimeout: 3,
containerCapStr: '4',
credentialsId: '',
dockerHostname: '',
name: 'docker.local',
readTimeout: 60,
serverUrl: 'unix:///var/run/docker.sock', // <-- Replace here by the tcp address
version: ''
]

编辑1:

不知道有没有用,Windows上的Docker Daemon位于 C:\ProgramData\docker根据 Docker Daemon configuration doc .

编辑2:

您需要明确说明要使用的容器 host网络,因为您想同时公开 Jenkins 和 Docker API。
关注 this documentation ,您只需添加 --network=host (或 network_mode: 'host' 在 docker-compose 中)到您的容器/服务。更多信息,您可以阅读 this article了解这种网络模式的目的是什么。

关于Windows 10 主页上的 Docker - 在 docker 容器内连接到 docker 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217900/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com