内容简介:本文包含以下内容:使用默认镜像登陆后显示的时间为默认0时区的,可以通过下面方式简单修改,创建一个新的 Dockerfile,内容如下:根据当前文件创建一个新的镜像即可。
本文包含以下内容:
- 配置 Jenkins 镜像时区,使用国内的时区
- 配置宿主机挂载目录
- 创建启动脚本
- Jenkins 配置 Publish over SSH,允许 ssh 登陆宿主机
- Jenkins 构建镜像
Jenkins 官方文档:
https://github.com/jenkinsci/docker/blob/master/README.md
其他相关文档:
https://jenkins.io/zh/doc/book/installing/
修改时区参考:
https://blog.csdn.net/isea533/article/details/87261764配置时区
使用默认镜像登陆后显示的时间为默认0时区的,可以通过下面方式简单修改,创建一个新的 Dockerfile,内容如下:
FROM jenkins/jenkins:lts USER root RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone ARG user=jenkins USER ${user}
根据当前文件创建一个新的镜像即可。
更多配置时区方法看这里: https://blog.csdn.net/isea533/article/details/87261764
配置宿主机挂载目录
在宿主机创建一个 /var/jenkins_home
,jenkins 所有信息都放在这里,当挂载该目录时,以后可以方便的升级 jenkins 镜像,不影响所有任务、配置、插件等信息。
创建目录后,配置权限 chmod 777 /var/jenkins_home
。
参考的启动脚本
docker run -d -p 9999:8080 \ -p 50000:50000 \ --restart=always \ --name jenkins \ -v /var/jenkins_home:/var/jenkins_home \ jenkins/jenkins:lts
最后的镜像名 jenkins/jenkins:lts
可以换成上面修改时区后的镜像。
配置 SSH
参考:
https://segmentfault.com/a/1190000012921606
https://hyjk2000.github.io/2012/03/16/how-to-set-up-ssh-keys/ 在 Jenkins 中安装 Publish over SSH
插件,然后进入 jenkins 容器:
docker exec -it jenkins /bin/bash
进入后,执行下面命令创建 ssh 密钥:
# 创建目录 mkdir ~/.ssh && cd ~/.ssh # 生成密钥 ssh-keygen -t rsa # 一直回车即可 # 生成私钥id_rsa,公钥id_rsa.pub # 退出镜像 exit
在 jenkins 镜像中, ~
home 目录就是 /var/jenkins_home
,所以 .ssh
文件也在宿主机上。
Jenkins Dockerfile 部分代码如下
RUN groupadd -g ${gid} ${group} \ && useradd -d "$JENKINS_HOME" -u ${uid} -g ${gid} -m -s /bin/bash ${user}
-d
指定了用户的 home
目录
下面开始在【宿主机】上继续操作,进入挂载的 /var/jenkins_home/.ssh
目录,执行下面的操作:
# 在宿主机创建 .ssh 目录 mkdir ~/.ssh # 将 jenkins 镜像的公钥追加到 authorized_keys 后面 cat id_rsa.pub >> ~/.ssh/authorized_keys
接下来还要配置 sshd
服务,按下面进行操作:
vi /etc/ssh/sshd_config
编辑 sshd_config 的配置
# 启用下面的配置 RSAAuthentication yes PubkeyAuthentication yes # 请留意 root 用户能否通过 SSH 登录 PermitRootLogin yes
重启 SSH 服务:
service sshd restart
配置 Publish over SSH
在 Jenkins 中点击【系统管理】->【系统设置】,找到 Publish over SSH
插件,配置如下:
填写说明:
- Passphrase 是创建 ssh 密钥时输入的密码,如果你按照前面一直回车,就是空,不需要输入,上图显示的内容是保存后自动出现的,不需要管。
- Key 部分要输入上面生成的公钥内容
- Name 给配置起一个主机名,自己能识别即可
- Hostname 配置主机地址
- Username 登陆的用户
配置完保存,点击【Test Configuration】测试能否登陆。
构建镜像
Git 示例: https://gitee.com/free/docker-test
在 Jenkins 新建一个项目,然后配置如下:
这里使用了上面提供的 Git 地址。
选择 Send files or execute commands over SSH after the build runs ,配置如下:
这里就是选择了宿主机,然后配置了一个命令,这个命令是我们重点看的,命令如下:
cd /var/jenkins_home/workspace/DockerTest && docker build -t dockertest .
Jenkins 会通过 Git 下载项目,会下载到 /var/jenkins_home/workspace/
目录,Jenkins 镜像通过 ssh 登陆到宿主机时,可以直接访问到镜像中的该目录,所以能在宿主机执行该命令。
上面的命令就是进入 DockerTest
目录,执行构建镜像。
做好上面配置后,立即构建:
输出的日志:
Started by user NetStar Building in workspace /var/jenkins_home/workspace/DockerTest No credentials specified > git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository > git config remote.origin.url https://gitee.com/free/docker-test # timeout=10 Fetching upstream changes from https://gitee.com/free/docker-test > git --version # timeout=10 > git fetch --tags --progress https://gitee.com/free/docker-test +refs/heads/*:refs/remotes/origin/* > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 984f8a72be7d51f5f6586248e1734f5f8394b0cf (refs/remotes/origin/master) > git config core.sparsecheckout # timeout=10 > git checkout -f 984f8a72be7d51f5f6586248e1734f5f8394b0cf Commit message: "test" > git rev-list --no-walk 984f8a72be7d51f5f6586248e1734f5f8394b0cf # timeout=10 SSH: Connecting from host [27e4fe10d3b8] SSH: Connecting with configuration [k8s-master] ... SSH: EXEC: STDOUT/STDERR from command [cd /var/jenkins_home/workspace/DockerTest && docker build -t dockertest .] ... Sending build context to Docker daemon 53.76kB Step 1/3 : FROM alpine:3.9 ---> caf27325b298 Step 2/3 : RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && apk del tzdata ---> Using cache ---> 5508719ca922 Step 3/3 : CMD ["/bin/sh"] ---> Using cache ---> a8a23bfcceef Successfully built a8a23bfcceef Successfully tagged dockertest:latest SSH: EXEC: completed after 200 ms SSH: Disconnecting configuration [k8s-master] ... SSH: Transferred 0 file(s) Finished: SUCCESS
构建成功后,通过 docker images
查看镜像:
dockertest latest a8a23bfcceef 1 minutes ago 6.86MB
所有的配置中,关键的地方在:
/var/jenkins_home
理解这个运行机制后,就能根据自己的需要进行各种定制了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 配置 Docker 容器的 RabbitMQ
- 动态修改容器中的配置文件
- 如何配置集成容器的OVN网络?
- 配置基于容器的的汇编环境
- 容器监控实践—Prometheus的配置与服务发现
- 调查:错误配置是容器面临的最高安全性问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Think About Algorithms
Jeff Edmonds / Cambridge University Press / 2008-05-19 / USD 38.99
HOW TO THINK ABOUT ALGORITHMS There are many algorithm texts that provide lots of well-polished code and proofs of correctness. Instead, this one presents insights, notations, and analogies t......一起来看看 《How to Think About Algorithms》 这本书的介绍吧!