一 基础环境准备

[root@node6 ~]# cat /etc/redhat-release

CentOS Linux release 7.6. (Core)

[root@node6 ~]# yum -y install epel-release

[root@node6 ~]# yum update

[root@node6 ~]# uname -r

3.10.-957.27..el7.x86_64

二 安装docker

2.1 使用脚本安装

[root@node6 ~]# curl -fsSL https://get.docker.com/ | sh

# Executing docker install script, commit: f45d7c11389849ff46a6b4d94e0dd1ffebca32c1
+ sh -c 'yum install -y -q yum-utils'
+ sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo'
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
+ '[' stable '!=' stable ']'
+ sh -c 'yum makecache'
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 6.0 kB ::
* base: mirror.pregi.net
* epel: mirror.pregi.net
* extras: mirror.pregi.net
* updates: mirror.pregi.net
base | 3.6 kB ::
docker-ce-stable
Metadata Cache Created
+ '[' -n '' ']'
+ sh -c 'yum install -y -q docker-ce'

2.2 启动docker

[root@node6 ~]# systemctl start docker

[root@node6 ~]# systemctl status docker

2.3 尝试运行jnekins容器

运行jenkins容器

[root@node6 ~]# docker run -d --name jenkins_dev -p 8000:8080 -p 50000:50000  jenkins/jenkins:lts

Unable to find image 'jenkins/jenkins:lts' locally
lts: Pulling from jenkins/jenkins
9a0b0ce99936: Pull complete
db3b6004c61a: Pull complete
f8f075920295: Pull complete
6ef14aff1139: Pull complete
962785d3b7f9: Pull complete
631589572f9b: Pull complete
c55a0c6f4c7b: Pull complete
911269a281e7: Pull complete
45099f90ad07: Pull complete
bd655133fb06: Pull complete
ea116f49f692: Pull complete
a9e13a874162: Pull complete
bdbca454a0c4: Pull complete
9b2fec49ceaa: Pull complete
765aaab2ff5b: Pull complete
a46bfc77dc0f: Pull complete
2cd8e1655f4a: Pull complete
4d138a7aea1a: Pull complete
Digest: sha256:c3b6fa9216336022067be94adb9d4696459903bf3e67e01a8d0009994f5ab78d
Status: Downloaded newer image for jenkins/jenkins:lts
d63c603216f7d24f0662318e754bf44c3ab25d11f5b3dc8ca764818d851d85b6

[root@node6 ~]# ip route

default via 192.168.132.2 dev ens33
default via 192.168.132.2 dev ens33 proto dhcp metric
169.254.0.0/ dev ens33 scope link metric
172.17.0.0/ dev docker0 proto kernel scope link src 172.17.0.1
192.168.132.0/ dev ens33 proto kernel scope link src 192.168.132.136 metric
192.168.132.0/ dev ens33 proto kernel scope link src 192.168.132.147 metric

[root@node6 ~]# netstat -ntlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 127.0.0.1: 0.0.0.0:* LISTEN /master
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp6 ::: :::* LISTEN /master
tcp6 ::: :::* LISTEN /docker-proxy
tcp6 127.0.0.1: :::* LISTEN /java
tcp6 ::: :::* LISTEN /java
tcp6 ::: :::* LISTEN /docker-proxy
tcp6 ::: :::* LISTEN /java
tcp6 ::: :::* LISTEN /sshd

访问50000端口

[root@node6 bin]# docker ps -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
d63c603216f7 jenkins/jenkins:lts "/sbin/tini -- /usr/…" minutes ago Up minutes 0.0.0.0:->/tcp, 0.0.0.0:->/tcp jenkins_dev

[root@node6 ~]# docker exec -it jenkins_dev \

cat /var/jenkins_home/secrets/initialAdminPassword

c549879f412f4063a5098a45276b0320

或者进入到容器的内部,执行docker exec命令。
sudo docker exec -it jenkins_dev bash

进入到容器内部后,执行下面的命令去获取内容。

cat /var/jenkins_home/secrets/initialAdminPassword

运行jenkins容器,容器使用数据卷

创建jenkins容器,没有使jenkins_home目录中的数据保持持久,简单的说,就是如果删除了容器,那么jenkins_home目录中的数据也会被删除。

因此通过data volumes能保持数据的持久,数据卷在特别的目录,能保持数据持久而不受容器生命周期的影响。 就是在删除容器时,还能保持数据。数据完全和容器能够独立。

三 容器使用数据卷

使用下面命令运行Jenkins容器。

3.1 删除容器

[root@node6 bin]# docker stop d63c603216f7
d63c603216f7 [root@node6 bin]# docker rm d63c603216f7
d63c603216f7

[root@node6 bin]# docker run -d --name jenkins_prod -p 8080:8080 -p 50000:50000 -v jenkins-home-prod:/var/jenkins_home jenkins/jenkins:lts

a53cb2d416f6e3aa1cbb48d81f2e60f254063775436fb95cc273da602ebb4e46

[root@node6 bin]# docker ps -a

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
a53cb2d416f6 jenkins/jenkins:lts "/sbin/tini -- /usr/…" seconds ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp jenkins_prod

-v jenkins-home-prod:/var/jenkins_home选项创建一个名为jenkins-home-prod的卷,并和容器内部的/var/jenkins_home目录做映射。

执行下面的命令去查看jenkins_prod容器中的/var/jenkins_home目录内容。

[root@node6 bin]# docker exec -it jenkins_prod ls -lrt /var/jenkins_home

-rw-rw-r--   root    root     Oct  : tini_pub.gpg
-rw-r--r-- jenkins jenkins Nov : copy_reference_file.log
drwxr-xr-x jenkins jenkins Nov : war
-rw-r--r-- jenkins jenkins Nov : failed-boot-attempts.txt
-rw-r--r-- jenkins jenkins Nov : secret.key
-rw-r--r-- jenkins jenkins Nov : secret.key.not-so-secret
drwxr-xr-x jenkins jenkins Nov : plugins
drwxr-xr-x jenkins jenkins Nov : jobs
drwxr-xr-x jenkins jenkins Nov : nodes
-rw-r--r-- jenkins jenkins Nov : hudson.model.UpdateCenter.xml
-rw------- jenkins jenkins Nov : identity.key.enc
-rw-r--r-- jenkins jenkins Nov : jenkins.telemetry.Correlator.xml
drwxr-xr-x jenkins jenkins Nov : userContent
drwxr-xr-x jenkins jenkins Nov : logs
-rw-r--r-- jenkins jenkins Nov : nodeMonitors.xml
-rw-r--r-- jenkins jenkins Nov : jenkins.install.UpgradeWizard.state
drwxr-xr-x jenkins jenkins Nov : users
drwx------ jenkins jenkins Nov : secrets
-rw-r--r-- jenkins jenkins Nov : config.xml

3.2 列出数据卷

[root@node6 bin]# docker volume ls

DRIVER              VOLUME NAME
local fffcf955473d4cd319aa9fc6c32a5f32ca09606ff4d4c74d1a5462c67ea4f025
local jenkins-home-prod

3.3 测试数据卷

  • 执行以下步骤测试数据卷
  • 在jenkins server中做一些改变,修改/var/jenkins_home目录中的内容
  • 删除jenkins容器
  • 使用下面的命令检查活动的jenkins容器

[root@node6 bin]# docker ps --format "{{.ID}}: {{.Image}} {{.Names}}"

a53cb2d416f6: jenkins/jenkins:lts jenkins_prod

3.4 访问测试

使用http://IP:8080访问jenkins服务器

http://192.168.132.136:8080/login?from=%2F

使用下面的命令获取initialAdminPassword文件的内容

[root@node6 bin]# docker exec -it jenkins_prod \

> cat /var/jenkins_home/secrets/initialAdminPassword

6a8fff13ae8e47ddadef1105de1230e7

获取密码后,粘贴到里面后,安装插件,然后创建First Admin User.

创建用户

创建一个任务

3.5 查看目录

执行下面的命令获取/var/jenkins_home/users目录中的内容

[root@node6 bin]# docker exec -it jenkins_prod ls -lrt

drwxr-xr-x    root root    Sep   : home
drwxr-xr-x root root Sep : boot
drwxr-xr-x root root Oct : usr
drwxr-xr-x root root Oct : srv
drwxr-xr-x root root Oct : run
drwxr-xr-x root root Oct : opt
drwxr-xr-x root root Oct : mnt
drwxr-xr-x root root Oct : media
drwxr-xr-x root root Oct : lib64
drwxr-xr-x root root Oct : lib
drwx------ root root Oct : root
drwxr-xr-x root root Oct : var
drwxr-xr-x root root Oct : sbin
drwxr-xr-x root root Oct : bin
drwxr-xr-x root root Nov : etc
dr-xr-xr-x root root Nov : proc
dr-xr-xr-x root root Nov : sys
drwxr-xr-x root root Nov : dev
drwxrwxrwt root root Nov : tmp

3.6 删除容器

[root@node6 bin]# docker kill jenkins_prod
jenkins_prod
[root@node6 bin]# docker rm jenkins_prod
jenkins_prod
[root@node6 bin]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3.7 查看已存在容器以及卷

[root@node6 bin]# docker ps -a --format "{{.ID}}: {{.Image}} {{.Names}}"
[root@node6 bin]# docker volume ls
DRIVER VOLUME NAME
local fffcf955473d4cd319aa9fc6c32a5f32ca09606ff4d4c74d1a5462c67ea4f025
local jenkins-home-prod

3.8 创建名为jenkins_prod的容器,并使用已经存在的jenkins-home-prod卷。

[root@node6 bin]# docker run -d --name jenkins_prod -p : \
> -p : -v jenkins-home-prod:/var/jenkins_home \
> jenkins/jenkins:lts
b119e7f28b507b3a3e9dd4a91a5d361bbadbfdad35d4cf95cc467bc6daed8d3a

3.9 访问测试

访问 http://ip:8080,可以直接看到登陆界面,而不是再次让我们初始登陆

http://192.168.132.136:8080

直接出现登陆界面

登陆进入后,数据依然在

实验完成


参考文档:藏雪原老师视频教程https://edu.csdn.net/course/play/9051/187998

DEVOPS技术实践_14:使用docker部署jenkins的更多相关文章

  1. docker部署Jenkins,以及在Jenkins中使用宿主机的docker/docker-compose命令

    使用最新的官方镜像jenkins/jenkins 第一次使用的docker部署jenkins的时候,出现了两个问题: 1.因为用户权限问题挂载/home/jenkins/data到/var/jenki ...

  2. DEVOPS技术实践_15:使用Docker作为Jenkins的slave

    前面实验了使用docker搭建一个jenkins,下面实验使用docker作为jenkins的slave节点 1. 环境准备 一个运行Docker的主机或者群集 Jenkins应该能访问互联网,方便安 ...

  3. Docker部署Jenkins 2.285版持续部署集成实践(1)

    抓取Jenkins镜像 docker pull jenkins/jenkins 创建映射本地路径: 运行Jenkins实例 docker for windows: docker run -it -p ...

  4. docker 部署 jenkins

    建议使用的Docker映像是jenkinsci/blueocean image(来自 the Docker Hub repository). 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 ...

  5. Ubuntu系统下基于docker部署Jenkins环境

    本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...

  6. 基于docker部署jenkins

    1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...

  7. Docker部署Jenkins测试环境

    安装docker环境 yum install epel-release -y && yum install docker -y 如果是高手需要docker-compose的话就再装个d ...

  8. docker部署jenkins环境

    首先获取jenkins的镜像: docker pull jenkins 设置jenkins_home映射: sudo mkidr -p /jenkins_home /jenkins_home 启动容器 ...

  9. docker 部署 jenkins server

    1. 拉取一个jenkins 镜像 docker pull jenkins 2. 创建与jenkins配置目录对应的,容器外的,文件目录,并修改相应的权限 mkdir /home/jenkins ch ...

随机推荐

  1. Spring security获取当前用户

    1.如果在jsp页面中获取可以使用spring security的标签 页面引入标签 <%@ taglib prefix="sec" uri="http://www ...

  2. Navicat连接MySQL8.0版本时 建议升级连接客户端这个提示怎么办

    开始->mysql 8.0 command line client ->执行下面的命令//开启mysql服务mysql.server start//进入mysqlmysql -u root ...

  3. Spring IoC 使用详解

    在Spring中,依赖注入(DI)模式实现了控制反转(IoC)原理.让我们通过一个例子来帮助理解依赖注入.我们先看到java版的例子,然后在此基础上加上spring的功能.就例子而言,是相当地简单.Q ...

  4. CF986F Oppa Funcan Style Remastered

    CF986F Oppa Funcan Style Remastered 不错的图论转化题! 题目首先转化成:能否用若干个k的非1因数的和=n 其次,因数太多,由于只是可行性,不妨直接都用质因子来填充! ...

  5. mysql 优化 1

    一. 数据库索引 规则8:业务需要的相关索引是根据实际的设计所构造sql语句的where条件确定的,业务不需要的不要建索引,不允许在联合索引(或主键)中存在多余的字段,特别是该字段根本不会在条件语句中 ...

  6. Oracle数据字典全解

    一.概念: 1.数据字典(data dictionary)是 Oracle 数据库的一个重要组成部分,这是一组用于记录数据库信息的只读(read-only)表. 数据字典里存有用户信息.用户的权限信息 ...

  7. 洛谷 3177 [HAOI2015] 树上染色

    题目描述 有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之 ...

  8. Laravel5使用ElasticSearch

    https://blog.csdn.net/qq_16829085/article/details/80725125 安装elasticsearch和ik插件 (elasticsearch的使用需要配 ...

  9. docker 使用总结

    docker run asn@hadoop1:~/Desktop$ docker run --help Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG ...

  10. input submit标签的高度和宽度与input text的差异

    <input type="text"> 时设置input的高度和border,最后元素的高度和宽度包含了border的值. <input type="s ...