关于docker-compose运行jenkins的问题

关于docker-compose运行jenkins的问题

version: '3'
services:
  jenkins:
    container_name: 'jenkins-demo'
    image: jenkins/jenkins:lts
    restart: always
    user: 'jenkins:0'
    ports:
    - "10006:8080"
    - "50001:50000"
    - "10052:10051"
    volumes:
      - /src/dokcer/jenkins_demo:/var/jenkins_home:z
      - /usr/bin/docker:/usr/bin/docker:z
      - /var/run/docker.sock:/var/run/docker.sock:z

如果这么设置会提示Permission denied即用户不对

如果改为下面这种

version: '3'
services:
  jenkins:
    container_name: 'jenkins-demo'
    image: jenkins/jenkins:lts
    restart: always
    user: '0'
    ports:
    - "10006:8080"
    - "50001:50000"
    - "10052:10051"
    volumes:
      - /src/dokcer/jenkins_demo:/var/jenkins_home:z
      - /usr/bin/docker:/usr/bin/docker:z
      - /var/run/docker.sock:/var/run/docker.sock:z

能够运行,但是到了后面部署的时候,即在构建时候运行shell脚本

docker build --no-cache -t ${image_name}:${port}

会报,会报没有权限,到底这user怎么设置呢?



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 黑小执事 2019-11-26 13:58:11

我重新整理一遍如下

1. cat /etc/group | grep docker
结果是 dockerroot:x:991:
2.
version: '3'
services:
  jenkins:
    container_name: 'jenkins-demo'
    image: jenkins/jenkins:lts
    restart: always
    user: jenkins:991
    ports: 
    - "10006:8080"
    - "50001:50000"
    - "10052:10051"
    volumes:
      - /src/dokcer/jenkins_demo:/var/jenkins_home
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock

不能运行

Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
3. 
删掉volume修改如下
version: '3'
services:
  jenkins:
    container_name: 'jenkins-demo'
    image: jenkins/jenkins:lts
    restart: always
    user: jenkins:991
    ports: 
    - "10006:8080"
    - "50001:50000"
    - "10052:10051"
    volumes:
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
可以运行。但是我还是希望不要删掉vulume


  • Brian #1
    这里不是docker的权限问题了,你可以 使用chmod -R 777 /src/dokcer/jenkins_demo在宿主机上这么执行一下~~
    2019-11-27 00:00:36
  • Brian #2
    Jenkins在宿主机上创建文件的时候发现没有写权限,所以要给一下目录让Jenkins可以操作目录 中的内容
    2019-11-27 00:01:28
  • 提问者 黑小执事 回复 Brian #3
    谢谢???
    2019-11-27 19:41:17
Brian 2019-11-26 12:34:46

以下是课程中的docker-compose.yml示例:

可以作为参考:

version: '3'

services:

  jenkins:

    container_name: 'jenkins'

    image: jenkins/jenkins:lts

    restart: always

    user: jenkins:994

    ports:

    - "10050:8080"

    - "50000:50000"

    - "10051:10051"

    volumes:

    - /home/jenkins/data:/var/jenkins_home

    - /usr/bin/docker:/usr/bin/docker

    - /var/run/docker.sock:/var/run/docker.sock

    - /etc/localtime:/etc/localtime

    # 需要设置 echo 'Asia/Shanghai' > /etc/timezone

    - /etc/timezone:/etc/timezone


报的是没有操作Docker的权限 ?

确定几点:1. 宿主机的docker的执行文件的位置which docker来查看 2. 当映射成功后,在jenkins的内部, 使用docker exec -it jenkins容器名 /bin/bash,来执行docker --version命令试试看看

  • 提问者 黑小执事 #1
    我又整理了一下,详见下面回答。。。
    2019-11-26 14:00:19
Brian 2019-11-25 23:34:29

你的uesr 0是怎么来的?user 0 一般是root用户啊,不建议这么玩

按照视频中的方法试过了没有?

cat /etc/group | grep docker

docker:x:994:

使用docker的用户,去操作docker,才不会有权限问题。

  • 提问者 黑小执事 #1
    执行cat /etc/group | grep docker,结果是 dockerroot:x:991: 请问user写什么,写user:'991',报Permission denied 写user:'jenkins:991',也是报Permission denied。
    2019-11-25 23:47:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师