我想将docker二进制文件和docker.sock绑定到docker jenkins容器,这样我就可以在jenkins中使用docker了。这是我的docker-compose.yml
version: "2"
services:
traefik:
image: traefik
restart: always
container_name: "${PROJECT_NAME}_traefik"
command: --api --docker
ports:
- '80:80'
- '443:443'
volumes:
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
labels:
- "traefik.frontend.rule=Host:${PROJECT_BASE_URL}"
jenkins:
#image: jenkins/jenkins
build: .
container_name: "${PROJECT_NAME}_jenkins"
environment:
- "JAVA_OPTS=-Dmail.smtp.starttls.enable=true"
ports:
- '50000:50000'
volumes:
- ./jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
labels:
- "traefik.frontend.rule=Host:${PROJECT_BASE_URL}"
我错过了什么吗?我在运行docker-compose start时没有使用sudo。
答案 0 :(得分:0)
您需要使jenkins容器具有访问设备的特权。默认情况下,出于安全考虑,此功能已关闭。
有关更多详细信息,请参见https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities,甚至提供了运行docker守护程序的示例。
在您的docker compose文件中,将privileged: true
添加到您的jenkins服务中