tra*_*off 6 debian jenkins docker docker-compose
我使用docker-compose和这个配置部署了标准的Jenkins Docker镜像:
deployer:
image: jenkins
volumes:
- "/mnt/jenkins:/var/jenkins_home"
- "/var/run/docker.sock:/var/run/docker.sock"
ports:
- "2375:2375"
- "8080:8080"
- "50000:50000"
Run Code Online (Sandbox Code Playgroud)
在阅读了大量SO问题之后,我测试了将Root添加到docker用户组gpasswd -a ${USER} docker并验证了Container内的用户是否为Root docker exec jenkins_deployer echo ${USER}.
当我尝试使用"Docker URL = unix:///var/run/docker.sock"在Jenkins UI中添加Docker访问时,我收到错误消息" org.newsclub.net.unix.AFUNIXSocketException:Permission denied(socket: /run/docker.sock) "
如何让Jenkins访问docker.sock以自动部署Docker容器?
我知道我迟到了两年,但我遇到了同样的问题,并且拥有这个解决方案将节省我几个小时的工作。
\n\n所以我需要部署一个自动部署 Docker 容器的 Jenkins 容器。以下是我用来构建和运行的文件:
\n\nDockerfile
\n\nFROM jenkins/jenkins:latest\n\nUSER root\nRUN apt-get update -qq \\\n && apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common\nRUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -\nRUN add-apt-repository \\\n "deb [arch=amd64] https://download.docker.com/linux/debian \\\n $(lsb_release -cs) \\\n stable"\nRUN apt-get update -qq \\\n && apt-get install docker-ce=17.12.1~ce-0~debian -y\n\nRUN usermod -aG docker jenkins\nRun Code Online (Sandbox Code Playgroud)\n\ndocker-compose.yml
\n\nversion: \'3\'\n\nservices:\n jenkins:\n container_name: \'jenkins-container\'\n privileged: true\n build: .\n ports:\n - \'8080:8080\'\n - \'50000:50000\'\n volumes:\n - jenkins-data:/var/jenkins_home\n restart: unless-stopped\n\nvolumes:\n jenkins-data:\nRun Code Online (Sandbox Code Playgroud)\n\n然后,在这些文件所在的文件夹中,运行以下命令:
\n\ndocker-compose up\nRun Code Online (Sandbox Code Playgroud)\n\n当容器启动时,使用它来启动内部的 Docker:
\n\ndocker exec -it --user root <CONTAINER_ID>\n\nservice docker start\nRun Code Online (Sandbox Code Playgroud)\n\n瞧\xc3\xa0!可能有一些更优化的解决方案,但这现在对我来说非常有用。
\n\n您现在可以<YOUR_IP>:8080在浏览器中访问,以访问可以运行 Docker 容器的全新 Jenkins。
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |