Jenkins 问题汇总

268 阅读3分钟

安装Jenkins

  1. 下载 jenkinsci/blueocean 镜像
#运⾏这个命令会查看仓库的jenkins镜像资源
docker search jenkins
#我们选择下载 jenkinsci/blueocean(这个是jenkins集成blueocean的插件,可视化流⽔线)
docker pull jenkinsci/blueocean
#下载后我们可以运⾏docker images 命令查看本地镜像
docker images
  1. 运行容器
docker run \
 --name jenkins \
 -d \
 -it \
 -p 8080:8080 \
 -p 50000:50000 \
 -v jenkins:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v /etc/localtime:/etc/localtime:ro \
 jenkinsci/blueocean
  • -d(可选): 在后台运行容器并输出容器ID。如果指定此选项, 则在终端窗口中输出正在运行的此容器的Docker日志。

  • -p 8080:8080: 映射容器的端口 8080 到主机上的端口 8080。 前面部分代表主机上的端口,而后面部分代表容器的端口。

  • -p 50000:50000(可选):将容器的端口 50000 映射到主机上的端口 50000 。 如果在其他机器上设置了一个或多个基于JNLP的Jenkins代理程序,而这些代理程序又与容器交互(充当“主”Jenkins服务器,或者简称为“Jenkins主”), 则这是必需的。默认情况下,基于 JNLP 的 Jenkins 代理通过TCP端口 50000 与Jenkins主站进行通信可以通过“ 配置全局安全性” 页面更改Jenkins主服务器上的端口号。

  • -v /var/jenkins:/var/jenkins_home(可选,但强烈建议):映射在容器中的 /var/jenkins_home 目录到具有名字 jenkins-data( /var/jenkins ) 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run … 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。 注意: 所述的 jenkins-data 卷也可以 docker volume create 命令创建:docker volume create jenkins-data 代替映射 /var/jenkins_home 目录转换为 Docker 卷,还可以将此目录映射到计算机本地文件系统上的目录。 例如,指定该选项 -v HOME/jenkins:/var/jenkins_home 会将容器的 /var/jenkins_home 目录映射 到 本地计算机上目录中的 jenkins 子目录, 该 HOME 目录通常是 /Users/<your-username>/jenkins/home/<your-username>/jenkins

  • -v /var/run/docker.sock:/var/run/docker.sock(可选): /var/run/docker.sock 表示 Docker 守护程序通过其监听的基于 Unix 的套接字。 该映射允许容器与Docker守护进程通信, 如果容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含 agent 部分用 docker 例如, agent { docker { … } } 此选项是必需的。

  • -v /etc/localtime:/etc/localtime:ro : 同步容器和主机的时间,ps:这玩意在mac上不好使

  • jenkinsci/blueocean Docker 镜像本身。如果此镜像尚未下载,则此 docker run 命令 将自动下载镜像。此外,如果自上次运行此命令后发布了此镜像的任何更新, 则再次运行此命令将自动为您下载这些已发布的镜像更新。 注意:这个 Docker 镜像也可以使用以下 docker pull 命令独立下载(或更新) : docker pull jenkinsci/blueocean

遇到的问题

+ docker pull node:10.21.0

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/create?fromImage=node&tag=10.21.0: dial unix /var/run/docker.sock: connect: permission denied

script returned exit code 1

解决方法:

# Use ACL to add permission to your user to use the docker socket:
sudo setfacl -m user:$USER:rw /var/run/docker.sock

参考地址: superuser.com/questions/1…