安装环境
1.操作系统 centos7.3
2.Docker
问题所在
离线环境
由于公司服务器是离线环境,正常安装jenkins之后无法下载插件,需要在有网环境中打包好镜像。
创建挂载文件夹
mkdir /var/jenkins
chown -R 1000 /var/jenkins
此处是为了将容器中 ‘/var/jenkins_home’ 挂载至物理机中创建的文件夹,第二行命令是为了赋予权限,不然docker没有权限修改文件。
使用镜像
docker run -d --name myjenkins_old -p 8889:8080 -p 55000:50000 -p 45000:45000 -v /var/jenkins/:/var/jenkins_home jenkins/jenkins
命令详解
-d:后台运行容器,可以通过docker exec -it 容器名 /bin/bash
进入容器。
–name :容器命名,即 myjenkins_old 为此容器别名。
-p:端口代理,物理机的8889端口连接至容器的8080端口(即jenkins地址)。
-v:挂载,将物理机的/var/jenkins与容器的/var/jenkins_home相连,一处更改,两处变动。
jenkins/jenkins:docker会从本地镜像库中查询该镜像,如果没有的话会从docker官方镜像库中查找。(注意不要写成jenkins,docker镜像库的jenkins是很久以前的版本)
配置jenkins
访问jenkins
通过物理机ip:8889
访问jenkins网页,初次登录需要输入密钥
有两种办法获得密钥:
物理机
由于启动时设置了挂载,所以可以在物理机上找到密钥
cat /var/jenkins/secrets/initialAdminPassword
容器
如果没有设置挂载,那么可以通过docker exec进入容器。
docker exec -it 容器名 /bin/bash
cat /var/jenkins_home/secrtes/initialAdminPassword
输入之后正常下载jenkins插件,完成配置。
打包镜像
失败尝试
一开始试图使用docker commit打包镜像,最终已失败告终(原因不明).
Dockerfile
1.新建Docker文件夹
为了打包方便,建议将DockerFile和打包中需要的文件防止在同一个文件夹中。
mkdir jenkins_files
2.下载jenkens配置文件至物理机。
cp /var/jenkins .
或者
docker cp 容器名:/var/jenkins_home .
3.编写Dockerfile 文件
- 新建一个Dockerfile文件
vim Dockerfile
- 修改文件内容。其中
--chown=jenkins
至关重要,如果不赋权,创建容器时会权限不足。如果出现权限不足的命令,可以尝试在docker run 中加入-u 0
试试。
FROM jenkins/jenkins
COPY --chown=jenkins ./jenkins_home /var/jenkins_home
- 创建镜像
docker build -t jenkins_plugins .
-t 是名字和标签,即创建了一个名为jenkins_plugins的镜像 最后那个 .
不要忘记加,是指定上下文路径,因为Dockerfile中的路径是上下文路径,可以查看这篇文章Dockerfile构建镜像并理解上下文.
- 根据新镜像创建容器时,不能使用-v挂载磁盘,不然会无效。具体原因待探究。
未完
至此,已经成功创建了带有插件的jenkins镜像,后续内容以后再说。