docker启动jenkins,jenkins中调用docker
在jenkins中执行docker
思路
- jenkins中安装docker客户端,使用第三方的docker(需要付费)。
- jenkins中安装docker客户端,另一个容器中安装docker服务, docker-in-docker,需要特权模式,或者第三方的工具。
- jenkins中什么都不装,直接使用宿主机的docker服务
实现第三种
优点:简单,方便,直观
缺点:jenkins可以全权的管理所有的容器(包括jenkins自己),有隐含安全风险
docker凭什么来运行?
docker-cli
which docker查看
/usr/bin/docker
docker.scok
ls /var/run/docker.sock
docker-server
docker拉取镜像
docker pull jenkins/jenkins:jdk11
运行jenkins容器
docker run -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /root/myjenkins/jenkins_home/:/var/jenkins_home -u root -d --name jenkins -p 8120:8080 jenkins/jenkins:jdk11
这条命令用来运行一个 Jenkins 容器,它映射了所需的文件和目录,并设置了一些重要的参数。我们逐一解析:
-
docker run
: 启动一个新的容器的命令。 -
-v /usr/bin/docker:/usr/bin/docker
: 将主机上的 Docker 可执行文件 (/usr/bin/docker
) 映射到容器内的相同路径。这使得容器内的 Jenkins 可以使用 Docker 命令。 -
-v /var/run/docker.sock:/var/run/docker.sock
: 将主机上的 Docker socket 映射到容器内,以便容器内的 Jenkins 可以与主机上的 Docker 守护进程通信。这通常用来启用 Jenkins 在容器内管理其他 Docker 容器的功能。 -
-v /root/myjenkins/jenkins_home/:/var/jenkins_home
: 将主机上的 Jenkins 数据目录/root/myjenkins/jenkins_home/
映射到容器内的/var/jenkins_home
。这样可以持久化 Jenkins 数据,即使容器被删除,数据仍然保留。 -
-u root
: 指定以root
用户的身份运行容器。这是为了确保容器内的进程拥有足够的权限运行和管理文件。 -
-d
: 表示容器以后台方式运行(detached mode)。 -
--name jenkins
: 为这个容器指定一个名字,叫jenkins
,方便管理。 -
-p 8120:8080
: 映射端口。将主机的 8120 端口映射到容器的 8080 端口,这样主机可以通过http://localhost:8120
访问 Jenkins 的 Web UI。 -
jenkins/jenkins:jdk11
: 指定使用的镜像为jenkins/jenkins:jdk11
,即包含 JDK 11 的 Jenkins 镜像。
访问jenkins
创建管理员用户
安装完成之后在游览器上访问 localhost:port
,port
是安装时设置的端口号,比如:localhost:8120
注意:不同版本的 jenkins
页面可能会有点差异
根据提示的路径就能找到存放 管理员密码
的文件 initialAdminPassword
进入容器查看
docker exec -it jenkins bash
创建执行尝试
创建项目
执行
查看日志