安装Jenkins
- 下载 jenkinsci/blueocean 镜像
#运⾏这个命令会查看仓库的jenkins镜像资源
docker search jenkins
#我们选择下载 jenkinsci/blueocean(这个是jenkins集成blueocean的插件,可视化流⽔线)
docker pull jenkinsci/blueocean
#下载后我们可以运⾏docker images 命令查看本地镜像
docker images
- 运行容器
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