Prepare a basic environment
[root@node6 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node6 ~]# yum -y install epel-release
[root@node6 ~]# yum update
[root@node6 ~]# uname -r
3.10 . 0 - 957.27 . 2 .el7.x86_64
Two assembling docker
2.1 uses scripts to install
[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 00:00:00 * base: mirror.pregi.net * epel: mirror.pregi.net * extras: mirror.pregi.net * updates: mirror.pregi.net base | 3.6 kB 00:00:00 docker-ce-stable Metadata Cache Created + '[' -n '' ']' + sh -c 'yum install -y -q docker-ce'
2.2 Starting docker
[root@node6 ~]# systemctl start docker
[root@node6 ~]# systemctl status docker
2.3 try to run jnekins container
Run jenkins container
[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 100 169.254.0.0/16 dev ens33 scope link metric 1002 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 192.168.132.0/24 dev ens33 proto kernel scope link src 192.168.132.136 metric 100 192.168.132.0/24 dev ens33 proto kernel scope link src 192.168.132.147 metric 100
[root@node6 ~]# netstat -ntlp
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1324/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 25594/sshd tcp6 0 0 ::1:25 :::* LISTEN 1324/master tcp6 0 0 :::8000 :::* LISTEN 56998/docker-proxy tcp6 0 0 127.0.0.1:8005 :::* LISTEN 6297/java tcp6 0 0 :::8009 :::* LISTEN 6297/java tcp6 0 0 :::50000 :::* LISTEN 56984/docker-proxy tcp6 0 0 :::8080 :::* LISTEN 6297/java tcp6 0 0 :::22 :::* LISTEN 25594/sshd
Access to port 50000
[root@node6 bin]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d63c603216f7 jenkins/jenkins:lts "/sbin/tini -- /usr/…" 16 minutes ago Up 16 minutes 0.0.0.0:50000->50000/tcp, 0.0.0.0:8000->8080/tcp jenkins_dev
[root@node6 ~]# docker exec -it jenkins_dev \
cat /var/jenkins_home/secrets/initialAdminPassword
c549879f412f4063a5098a45276b0320
Or into the interior of the container, docker exec command execution.
sudo docker exec -it jenkins_dev bash
After entering into the interior of the container, execute the following command to get the content.
cat /var/jenkins_home/secrets/initialAdminPassword
Run jenkins container, the container volume data using
Creating jenkins container, so there is no data in the directory jenkins_home maintain long-lasting, simply put, is that if the container is removed, then the data jenkins_home directory will be deleted.
Therefore, by maintaining persistent data volumes of data, in particular data volume directory, persistent data can be maintained without the influence of the container life cycle. That is, when you remove the container, but also to maintain data. Data integrity and the container independently.
Using three data volume container
Use the following command to run Jenkins container.
3.1 delete container
[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/…" 17 seconds ago Up 16 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins_prod
-v jenkins-home-prod: / var / jenkins_home option to create a volume called jenkins-home-prod, and the interior of the container and / var / jenkins_home do directory mapping.
Execute the following command to view the / var / jenkins_home directory contents jenkins_prod container.
[root@node6 bin]# docker exec -it jenkins_prod ls -lrt /var/jenkins_home
-rw-rw-r-- 1 root root 7152 Oct 28 20:47 tini_pub.gpg -rw-r--r-- 1 jenkins jenkins 50 Nov 4 13:56 copy_reference_file.log drwxr-xr-x 11 jenkins jenkins 4096 Nov 4 13:56 war -rw-r--r-- 1 jenkins jenkins 29 Nov 4 13:56 failed-boot-attempts.txt -rw-r--r-- 1 jenkins jenkins 64 Nov 4 13:56 secret.key -rw-r--r-- 1 jenkins jenkins 0 Nov 4 13:56 secret.key.not-so-secret drwxr-xr-x 2 jenkins jenkins 6 Nov 4 13:56 plugins drwxr-xr-x 2 jenkins jenkins 6 Nov 4 13:57 jobs drwxr-xr-x 2 jenkins jenkins 6 Nov 4 13:57 nodes -rw-r--r-- 1 jenkins jenkins 156 Nov 4 13:57 hudson.model.UpdateCenter.xml -rw------- 1 jenkins jenkins 1712 Nov 4 13:57 identity.key.enc -rw-r--r-- 1 jenkins jenkins 171 Nov 4 13:57 jenkins.telemetry.Correlator.xml drwxr-xr-x 2 jenkins jenkins 24 Nov 4 13:57 userContent drwxr-xr-x 3 jenkins jenkins 19 Nov 4 13:57 logs -rw-r--r-- 1 jenkins jenkins 907 Nov 4 13:57 nodeMonitors.xml -rw-r--r-- 1 jenkins jenkins 7 Nov 4 13:57 jenkins.install.UpgradeWizard.state drwxr-xr-x 3 jenkins jenkins 56 Nov 4 13:57 users drwx------ 4 jenkins jenkins 265 Nov 4 13:57 secrets -rw-r--r-- 1 jenkins jenkins 1658 Nov 4 13:57 config.xml
3.2 lists data volumes
[root@node6 bin]# docker volume ls
DRIVER VOLUME NAME
local fffcf955473d4cd319aa9fc6c32a5f32ca09606ff4d4c74d1a5462c67ea4f025
local jenkins-home-prod
3.3 Test data volume
- Perform the following steps the test data volume
- To make some changes, modifications / var / jenkins_home directory content jenkins server in
- Delete jenkins container
- Use the following command to check the activities of vessels jenkins
[root@node6 bin]# docker ps --format "{{.ID}}: {{.Image}} {{.Names}}"
a53cb2d416f6: jenkins/jenkins:lts jenkins_prod
3.4 Access test
Use http: // IP: 8080 server access jenkins
http://192.168.132.136:8080/login?from=%2F
Use the following command to get the contents of a file initialAdminPassword
[root@node6 bin]# docker exec -it jenkins_prod \
> cat /var/jenkins_home/secrets/initialAdminPassword
6a8fff13ae8e47ddadef1105de1230e7
After obtaining the password and paste it into the inside, install plug-ins, and then create a First Admin User.
Create a user
Create a task
3.5 View catalog
Execute the following command to get the contents of / var / jenkins_home / users directory
[root@node6 bin]# docker exec -it jenkins_prod ls -lrt
drwxr-xr-x 2 root root 6 Sep 8 10:51 home drwxr-xr-x 2 root root 6 Sep 8 10:51 boot drwxr-xr-x 1 root root 19 Oct 14 00:00 usr drwxr-xr-x 2 root root 6 Oct 14 00:00 srv drwxr-xr-x 3 root root 30 Oct 14 00:00 run drwxr-xr-x 2 root root 6 Oct 14 00:00 opt drwxr-xr-x 2 root root 6 Oct 14 00:00 mnt drwxr-xr-x 2 root root 6 Oct 14 00:00 media drwxr-xr-x 2 root root 34 Oct 14 00:00 lib64 drwxr-xr-x 1 root root 30 Oct 14 00:00 lib drwx------ 1 root root 24 Oct 18 23:40 root drwxr-xr-x 1 root root 26 Oct 28 20:47 var drwxr-xr-x 1 root root 18 Oct 28 20:47 sbin drwxr-xr-x 1 root root 18 Oct 28 20:48 bin drwxr-xr-x 1 root root 66 Nov 4 13:56 etc dr-xr-xr-x 147 root root 0 Nov 4 13:56 proc dr-xr-xr-x 13 root root 0 Nov 4 13:56 sys drwxr-xr-x 5 root root 340 Nov 4 13:56 dev drwxrwxrwt 1 root root 130 Nov 4 13:56 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 8080:8080 \ > -p 50000:50000 -v jenkins-home-prod:/var/jenkins_home \ > jenkins/jenkins:lts b119e7f28b507b3a3e9dd4a91a5d361bbadbfdad35d4cf95cc467bc6daed8d3a
3.9 访问测试
访问 http://ip:8080,可以直接看到登陆界面,而不是再次让我们初始登陆
直接出现登陆界面
登陆进入后,数据依然在
实验完成
参考文档:藏雪原老师视频教程https://edu.csdn.net/course/play/9051/187998