docker search jenkins
这里使用的是红框内镜像(因为这个镜像的docker版本较高)
docker pull jenkins/jenkins
docker images
在宿主机中创建/home/jenkins_home文件夹,并且进行文件权限授予,用来挂载Jenkins容器的文件夹。
mkdir -p /home/jenkins_home
-p --------------逐级创建
设置/home/jenkins_home文件夹的读写权限
chmod 777 /home/jenkins_home
docker run -d -u root -p 10000:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime jenkins/jenkins
命令 | 描述 |
---|---|
-d | -d后台运行 |
-u root | 使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误 |
-p 10000:8080 | 将容器内8080端口映射至宿主机10000端口,这个是访问jenkins的端口 |
-p 50000:50000 | 将容器内50000端口映射至宿主机50000端口 |
--name jenkins | --name jenkins设置容器名称为jenkins |
-v /home/jenkins_home:/var/jenkins_home | :/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录 |
-v /usr/bin/docker:/usr/bin/docker | 将宿主机的/usr/bin/docker挂载到jenkins容器 |
-v /var/run/docker.sock:/var/run/docker.sock | 将宿主机的/var/run/docker.sock挂载到jenkins容器 |
-v /etc/localtime:/etc/localtime | 让容器使用和服务器同样的时间设置 |
jenkins/jenkins | 镜像的名称,这里也可以写镜像ID |
1.docker-cli -------docker客户端
2.docker.sock --------docker中间件
3.docker-server ---------docker服务器
which docker
docker在宿主机的位置:/usr/bin/docker
ls /var/run/docker.sock
docker.sock在宿主机的位置:/var/run/docker.sock
使用docker的话,只需要docker-cli和docker.sock即可。如果要在jenkins容器内部使用宿主机的docker,只需要将宿主机中的/usr/bin/docker和/var/run/docker.sock挂载到jenkins容器即可。
docker exec -it jenkins bash
docker ps -a
docker --help
exit
在jenkins中执行docker有以下三种方式:
1.jenkins中安装docker客户端,使用第三方的docker,需要付费。
2.jenkins中安装docker客户端,另一个容器安装docker服务。docker-in-docker,需要特权模式,或者第三方工具。
3.jenkins中什么都不装,直接使用宿主机的docker服务。
以上介绍的,在jenkins容器中使用docker服务,就是基于第三种方式实现的。
优点:简单、方便、直观
缺点:jenkins可以全权管理所有的容器(包括jenkins自身),有隐含的安全风险。
docker logs jenkins
docker ps -a
docker start 9f8d
重启jenkins
docker restart jenkins
在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。在访问对应Jenkins地址时,要确保访问的端口号已开启。我的即为:http://192.168.16.138:10000/
这里要求输入初始的管理员密码,根据提示密码在/var/jenkins_home/secrets/initialAdminPassword
这个文件中,注意这个路径是Docker容器中的,所以我们通过如下命令获取一下
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
因为网络原因,需要将插件源设置为国内的,这样才可以安装插件。进入宿主机目录 /home/jenkins_home/,编辑文件 hudson.model.UpdateCenter.xml
cd /home/jenkins_home/
cat hudson.model.UpdateCenter.xml
vim hudson.model.UpdateCenter.xml
输入E,进入编辑模式,将 url 内容修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json(清华大学官方镜像)
修改完成后,按ESC键,退出编辑模式,再输入: wq,强制保存并退出
docker restart jenkins
重启之后,选择推荐插件安装
至此,Jenkins安装完成!!!