docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)

1.安装centos

参考
​ https://jingyan.baidu.com/article/15622f24dad3bafdfcbea5f7.html

1.1.安装jdk

参考
​ https://www.cnblogs.com/116970u/p/10400436.html
​ //注意不要安装在root目录下

1.2.安装maven

​ 在/usr/local下创建maven maven仓库mavendev (赋于独写得权限 chmod 777+文件所在路径)

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

​ 如出现wegt命令找不到 先安装

yum -y install wget   --可以使用wegt不用安装

​ 解压maven

tar -zxvf  apache-maven-3.1.1-bin.tar.gz

​ 将 apache-maven-3.1.1 改为 maven

mv apache-maven-3.1.1 maven

​ 更改settings.xml文件中

vi conf/settings.xml

​ 添加仓库路径

/usr/local/mavendev

​ 添加阿里云私服


	  alimaven
	  aliyun maven
	  http://maven.aliyun.com/nexus/content/groups/public/
	  central       
	

​ 配置环境变量

vi /etc/profile 

	export M2_HOME=/maven/maven                                   -- maven 安装的路径
	export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

​ 修改完重载这个文件使文件立即生效,否则重启计算机即可生效。

source /etc/profile 

​ //验证

	mvn  -v 

1.3.安装git

​ 查看是否安装过git

git --version

​ 安装git

yum -y install git
###移除git
yum remove git

2.安装docker

​ 防火墙设置
​ 查看防火状态

systemctl status firewalld
service  iptables status

​ 暂时关闭防火墙

systemctl stop firewalld
service  iptables stop

​ 永久关闭防火墙

systemctl disable firewalld
chkconfig iptables off

​ 重启防火墙

systemctl enable firewalld
service iptables restart 

​ yum安装docker

yum install docker
systemctl enable docker	 // systemctl是centos7中系统服务管理命令

​ 配置国内仓库:/etc/docker/daemon.json 配置仓库地址

vim /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
systemctl  restart docker
或者
{"registry-mirrors":["https://wghlmi3i.mirror.aliyuncs.com"]}  
systemctl  restart docker

​ 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

docker容器跟随docker启动

docker update --restart=always 容器名称或者容器id

2.1安装docker的可视化界面portainer

docker search portainer
docker pull portainer/portainer

#启动

docker run -d -p 9000:9000 \
    --restart=always \
    -v /opt/portainer:/data/portainer \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --name prtainer-test \
    portainer/portainer
  1. 启动完成后通过9000端口访问http://IP:9000
  2. 设置用户名密码 admin admin1234
  3. 单机版选择Local即可连接到本地Docker

//注意安装docker使用yum安装 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
在root用户下 su root
sudo yum update

3.安装gitlap

​ 拉取镜像

docker pull gitlab/gitlab-ce
运行镜像
# 将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级。
	mkdir -p /mnt/gitlab/etc 
	mkdir -p /mnt/gitlab/log 
	mkdir -p /mnt/gitlab/data

# 分别指定映射的端口,容器名字,挂载的卷(config,logs,data),镜像
	docker run -d \
	-p 2222:22 -p 4555:80 -p 8443:443 \
	--name gitlab \
	-v /data/gitlab/config/:/data/gitlab/config/ \
	-v /data/gitlab/logs/:/data/gitlab/logs/ \
	-v /data/gitlab/data/:/data/gitlab/data/ \
	gitlab/gitlab-ce:latest

# 检查是否运行成功,看到gitlab说明没问题:
	docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                      PORTS                                                               NAMES
d94a3639e722        gitlab/gitlab-ce:latest   "/assets/wrapper"        16 hours ago        Up 16 hours (healthy)       0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp   gitlab
确认以上步骤无误后,以下操作均需要在容器内进行:
# 进入容器内配置GitLab
	docker exec -it gitlab /bin/bash
root@d94a3639e722:/# 
# 出现上面一行说明已经进入容器内了
# 容器内进行配置相关配置文件
	vim /etc/gitlab/gitlab.rb
添加下面的配置(填写虚拟机Ip)
external_url 'http://192.168.11.3'
保存并退出

​ 更新配置

root@d94a3639e722:/# gitlab-ctl reconfigure
# 该步骤至少需要几分钟

​ 重启gitlab

root@d94a3639e722:/# gitlab-ctl restart
# 查看运行状态是否正常:
root@d94a3639e722:/# gitlab-ctl status
run: alertmanager: (pid 1193) 58248s; run: log: (pid 299) 58494s
run: gitaly: (pid 1202) 58247s; run: log: (pid 303) 58494s
run: gitlab-exporter: (pid 1209) 58247s; run: log: (pid 293) 58494s
run: gitlab-workhorse: (pid 1218) 58246s; run: log: (pid 287) 58494s
run: grafana: (pid 1227) 58246s; run: log: (pid 283) 58494s
run: logrotate: (pid 37010) 3202s; run: log: (pid 291) 58494s
run: nginx: (pid 1244) 58245s; run: log: (pid 289) 58494s
run: postgres-exporter: (pid 1249) 58244s; run: log: (pid 297) 58494s
run: postgresql: (pid 1268) 58244s; run: log: (pid 305) 58494s
run: prometheus: (pid 1278) 58243s; run: log: (pid 285) 58494s
run: redis: (pid 1286) 58243s; run: log: (pid 311) 58494s
run: redis-exporter: (pid 1422) 58243s; run: log: (pid 295) 58494s
run: sidekiq: (pid 1547) 58239s; run: log: (pid 309) 58494s
run: sshd: (pid 1554) 58239s; run: log: (pid 31) 58510s
run: unicorn: (pid 1561) 58237s; run: log: (pid 307) 58494s
如果配置得有问题,但是不想逐个去改,那么首先应该在容器外停止相应的容器:“docker stop gitlab”,再通过“docker rm containerID”这一命令删除指定容器,而镜像则不用动。containerID可以用“docker ps -a”获取。

docker update --restart=always 容器名称或者容器id

输入网址:http://192.168.11.3:4555/(虚拟机IP加上端口号)

4.安装jenkins

​ 拉取镜像

docker pull jenkins/jenkins:lts

​ 在主机上创建目录,并添加读写权限以便jenkins应用运行时读写文件

mkdir /var/jenkins_home
chmod 777 /var/jenkins_home
sudo chown -R 1000  /var/jenkins_home

​ 运行jenkins镜像 启动jenkins

docker run -d \
  -u root \
  -p 4455:8080 -p 50000:50000 \
  --name jenkins \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /usr/lib/jvm/java:/usr/lib/jvm/java \
  -v /usr/local/maven:/usr/local/maven \
  -v /usr/local/mvndev:/usr/local/mavendev \
  -v /var/jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

查看jenkins得密码

docker exec -it 容器id /bin/bash
	cat /var/jenkins_home/secrets/initialAdminPassword
	cc11dae969234e5398da8f1eb283aaf8

4.1Jenkins配置

下载插件 mavne gitlap Gitlab Hook Plugin Build Authorization Token Root

配置jdk maven git

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第1张图片
docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第2张图片

创建一个自由风格的项目

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第3张图片

下面圈住的内容要在gitlap中网络挂钩
docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第4张图片

执行mvn构建

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第5张图片

在gitlap上

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第6张图片

在gitlap填写Jenkins上面的url和token

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第7张图片

项目demo 随意建立一个springboot的项目 项目中配置dockerfile和docker registry的私仓地址 填写对应的信息


    
    app
    
    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
        
        
            com.spotify
            docker-maven-plugin
            1.0.0
            
                
                192.168.11.3:5000/${project.artifactId}:${project.version}
                
                openjdk:8
                
                ["java", "-jar", "/${project.build.finalName}.jar"]
                
                
                    
                        /
                        ${project.build.directory}
                        ${project.build.finalName}.jar
                    
                
                
                
            
        
    

//注意运行jenkins时要挂载jdk和maven 挂载Jenkins_home用于docker安装得jenkins在使用中可以找到宿主机上得安装环境**

5.安装 registry

​ 拉取镜像

docker  pull  registry 

​ 首先在在主机上新建一个目录,供存储镜像

cd /usr/local/
mkdir docker_registry 
赋于jenkins对应的1000得权限
sudo chmod 777  docker_registry 

修改daemon.json,让 docker信任私有仓库地址
	vim /etc/docker/daemon.json
添加如下内容,保存退出。
{
"insecure-registries":["192.168.11.3:5000"]
}
注意:该文件中如有多个内容,比如有之前配置的私服镜像地址,用英文逗号隔开,参考如下:  ,分隔
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
,"insecure-registries":["192.168.40.134:5000"]
}

重启docker

systemctl restart docker
docker run -d -p 5000:5000 --name=helregistry --restart=always --privileged=true  -v /usr/local/docker_registry:/var/lib/registry  docker.io/registry

启动

http://192.168.11.3:5000/v2/_catalog

6.安装Rancher

​ 在服务器上直接执行下面语句安装最新版的:

docker run -d --restart=always -p 80:80 -p 443:443 -v /usr/local/rancher:/var/lib/rancher/ rancher/rancher:stable

浏览器输入192.168.11.3进入rancher

6.1 k8s部署

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第8张图片

点击下一步 如下图 点击复制再linux上执行

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第9张图片

此时k8s单机集群正处于准备状态中等待一段时间集群自动搭建完成:

等待一段时间集群自动搭建完成,显示为active状态集群就搭建完成
docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第10张图片

点击执行kubectl命令行

执行 kubtc1 get svc

点击建立的测试集群-----点击储存

​ 添加持久卷:

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第11张图片

k8s部署结束

6.2 部署项目

查看项目及命名空间:添加项目

在这里插入图片描述

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第12张图片

开始部署项目: 填写项目名称 镜像 端口号

docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第13张图片
docker jenkins registry gitlap rancher k8s nacos 容器部署与持续集成(单机测试在centos7下进行)_第14张图片

测试访问192.168.11.3:30001/hello

7. docker部署mysql

下载镜像

[root@node-11 ~]# docker pull mysql:5.7.20

创建mysql目录

[root@node-11 ~]# mkdir /opt/mysql/{data,conf,logs} -p
目录说明:
    data:数据目录
    conf:配置文件
    logs:日志目录

编辑配置文件

[root@node-11 ~]# vim /opt/mysql/conf/mysqld.cnf
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
datadir		= /var/lib/mysql
lower_case_table_names = 1  ## 忽略mysql查询大小写

注意:这只是简单的mysql参数,具体的参数需要根据业务需求,自行添加即可,这里需要注意的是,涉及到mysql数据目录的话,一定要写容器内的路径,而不是映射到宿主机的目录。

启动

[root@node-11 ~]# docker run -d --restart=always -p 3306:3306 --name mysql \
 -v /opt/mysql/data:/var/lib/mysql \
 -v /opt/mysql/logs:/var/log/mysql \
 -v /opt/mysql/conf:/etc/mysql/mysql.conf.d \
 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.20

参数解释:

  1. –name: 容器名称
  2. -p 3306: 映射端口
  3. MYSQL_ROOT_PASSWORD:mysql初始密码
  4. -v冒号前面是宿主机目录,后面是容器目录

设置远程登录

docker exec -it mysql /bin/bash
root@cd0fb7617eb9:/# mysql -uroot -p

Enter password: ######输入mysql的密码(123456)

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright © 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

mysql> exit

8.docker部署nacos

安装nacos镜像

docker pull nacos/nacos-server:1.2.1

启动nacos镜像

docker run --env MODE=standalone --name nacos -d --restart=always -p 8848:8848 nacos/nacos-server:1.0.0

边做了端口映射,最后可以通过 ip:8848/nacos 访问,登录密码默认nacos/nacos

项目配置 添加mybatis mysql nacos 依赖 连接池依赖(//因为nacos内置的连接池和项目中连接数据库会产生冲突)


    mysql
    mysql-connector-java
    5.1.38


    com.alibaba
    druid
    1.1.20



    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-discovery
    2.0.2.RELEASE


    com.alibaba.cloud
    spring-cloud-starter-alibaba-nacos-config
    2.0.2.RELEASE



    
        
        dev
        
            dev
        
        
            true
        
    
    
        
        prod
        
            prod
        
    


    
        ${project.basedir}/src/main/java
        
            **/*.xml
        
    
    
        ${project.basedir}/src/main/resources
    
    
        src/main/resources
        true
        
            bootstrap.yml
            **/*-${profiles.active}.yml
        
    

9.编写shell脚本定时删除tag为none的镜像

创建清除脚本

在root目录下创建clear.sh

vim clear.sh

添加下面内容

#!/bin/bash
docker rmi `docker images | grep  '' | awk '{print $3}'`

使用chmod命令赋予脚本的执行权限

chmod +x clear.sh

定时执行(测试每分钟)

vi /etc/crontab
#每分钟执行该脚本
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
 */1 * * * * root bash /root/clear.sh

重启crontab

systemctl restart crond

自己简单总结,仅作参考—哈哈哈```

你可能感兴趣的:(linux,docker,centos,jenkins,devops)