[英]Docker on Windows10 home - inside docker container connect to the docker engine
在創建 Jenkins Docker 容器時,能夠連接到 Docker 守護進程非常有用。 這樣,我就可以在 Jenkins 容器內啟動 docker 命令。
例如,在啟動 Jenkins Docker 容器后,我想“docker exec -it container-id bash”並啟動“docker ps”。
在 Linux 上,您可以在 /var/run/docker.sock 上使用綁定掛載。 在 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 時,出現以下錯誤:
無法連接到 unix:///var/run/docker.sock 上的 Docker 守護進程。 docker 守護進程是否正在運行?
如何設置 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 而不是套接字。 我鼓勵您閱讀Nick Janetakis 撰寫的關於“了解 Docker 守護程序和 Docker CLI 如何協同工作”的文章。
然后有幾個 Jenkins 的 Docker 插件允許這種連接:
此外,您可以在 wiki.jenkins.io 上的Docker 插件文檔中找到其他信息:
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:
我不知道它是否有用,但是根據Docker Daemon configuration doc ,Windows 上的 Docker Daemon 位於C:\\ProgramData\\docker
。
編輯2:
您需要明確說明使用host
網絡的容器,因為您想同時公開 Jenkins 和 Docker API。 按照本文檔,您只需將--network=host
(或--network=host
-compose 中的network_mode: 'host'
)添加到您的容器/服務中。 有關更多信息,您可以閱讀本文以了解這種網絡模式的目的是什么。
第一次嘗試是使用“Docker Quickstart 終端”啟動 Docker 環境。 在該環境中運行 Docker 命令時,這是一個很好的解決方案。
當通過 Docker 安裝完整的 CI/CD Jenkins 環境時,意味着在 Jenkins Docker 容器內您需要訪問 Docker 守護進程。 在嘗試了許多解決方案,閱讀了許多帖子后,這不起作用。 @Paul Rey,非常感謝您嘗試各種路線。
一個好的解決方案是獲取一個 Ubuntu 虛擬機並通過 Oracle VM Virtualbox 安裝它。 然后通過此官方說明安裝 Docker非常重要。
在安裝 Docker 之前,當然需要先安裝 Curl、Git 等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.