docker+jenkins+gitlab+harbor(保姆级教程)

443 阅读5分钟

安装docker

特别说明

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

安装yum工具

如果是虚拟机搭建!一定要连接网络!!!!!!!!

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

设置更新本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

下载docker

yum install -y docker-ce

关闭防火墙后

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

启动docker

systemctl start docker  # 启动docker服务

################## docker 其他命令 ##################
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务

设置开机自启动 docker

systemctl enable docker # 开机自启动

配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:cr.console.aliyun.com/cn-hangzhou…

安装docker-compose

下载

如果下载速度慢,可以去github下载 github.com/docker/comp… 之后上传到/usr/local/bin/目录也可以。

curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改文件权限

chmod +x /usr/local/bin/docker-compose

Base自动补全命令

记住喽!这里要对应你下载docker-compose的版本,可不敢直接复制!!!!!!!

curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果上一步报错别急,修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

gitlab

创建文件夹

mkdir -p /home/docker/gitlab/config
mkdir -p /home/docker/gitlab/logs
mkdir -p /home/docker/gitlab/data

添加权限

chmod 777 /home/docker/gitlab/config
chmod 777 /home/docker/gitlab/logs
chmod 777 /home/docker/gitlab/data

启动镜像

docker run -d -p 443:443 -p 80:80 -p 22:22  
--name gitlab-dev 
--restart always 
-v /home/docker/gitlab/config:/etc/gitlab 
-v /home/docker/gitlab/logs:/var/log/gitlab 
-v /home/docker/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

修改配置文件

找到external_url的位置替换成自己的服务器ip或者域名

# vim /home/docker/gitlab/config/gitlab.rb
external_url 'http://192.168.10.21'

添加gitlab的邮箱服务 (还是这个配置文件下)

# vim /home/docker/gitlab/config/gitlab.rb
gitlab_rails['smtp_enable'] = true 
gitlab_rails['smtp_address'] = "smtp.163.com" 
gitlab_rails['smtp_port'] = 465 
gitlab_rails['smtp_user_name'] = "fzn@163.com" 
gitlab_rails['smtp_password'] = "xxxxxxxx" 
gitlab_rails['smtp_domain'] = "163.com" 
gitlab_rails['smtp_authentication'] = "login" 
gitlab_rails['smtp_enable_starttls_auto'] = true 
gitlab_rails['smtp_tls'] = true 

gitlab_rails['smtp_openssl_verify_mode'] = 'none' 

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'fzn@163.com' 
gitlab_rails['gitlab_email_display_name'] = 'gitlab-server' 

需要你改的地方就是

gitlab_rails['smtp_user_name'] = "这里填你的邮箱地址"

gitlab_rails['gitlab_email_from'] = '这里填你的邮箱地址'

上面2个的地址必须一致,不然会报错的!!!!!!!

gitlab_rails['smtp_password'] = "xxxxxxxx" 这里的密码是你邮箱的授权码,不是你的登陆密码!

image.png

重启gitlab

# 进入容器
docker exec -it <gitlab容器id> bash
# 刷新gitlab 配置
gitlab-ctl reconfigure
gitlab-ctl status
# 退出容器的命令 
exit

获取登陆密码

# 进入容器
docker exec -it <gitlab容器id> bash
# 获取密码
cat /etc/gitlab/initial_root_password
# 退出容器的命令 
exit

登陆gitlab

我们配置的端口是80,所以直接输入你服务器的地址

账户名:root

密码:上面获取的密码

jenkins

创建文件夹

mkdir -p /home/docker/jenkins_home

添加权限

chmod 777 /home/docker/jenkins_home

启动

docker run -p 8080:8080 -p 5000:5000 --name jenkins --restart always \
-u root -v /home/docker/jenkins_home:/var/jenkins_home \
-v var/run/docker.sock:/var/run/docker.sock \
-d jenkins/jenkins:lts

登陆&安装推荐插件&创建用户

安装git

# yum -y install git

jenkins 配置docker

验证系统中是否有jenkins用户
[root@jenkins-server ~]# grep jenkins /etc/passwd
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
验证系统中是否有docker用户及用户组
[root@jenkins-server ~]# grep docker /etc/group
docker:x:993:
添加jenkins用户到docker用户组
[root@jenkins-server ~]# usermod -G docker jenkins
[root@jenkins-server ~]# grep docker /etc/group
docker:x:993:jenkins
重启jenkins服务
[root@jenkins-server ~]# systemctl restart jenkins

添加登陆gitlab的配置

使用user password 登陆 gitlab 使用user password 登陆 部署服务器

安装插件

maven integration

git parameter

gitlab

Generic Webhook Trigger

ssh

全局工具配置

image.png

image.png

image.png

image.png

系统配置 ssh

image.png

harbor

去官网下载 (网速慢)

github.com/goharbor/ha…

用wget下载 (网速快)

wget https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-online-installer-v2.4.3.tgz

解压

# tar xf harbor-offline-installer-v2.4.1.tgz -C /home

查看安装后的harbor

# cd /home
# ls
harbor
[root@harbor-server home]# cd harbor/
[root@harbor-server harbor]# ls
common.sh  harbor.v2.4.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

修改文件名

# mv harbor.yml.tmpl harbor.yml

修改配置文件

[root@harbor-server harbor]# vim harbor.yml
[root@harbor-server harbor]# cat harbor.yml
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.10.23  # 修改成自己的ip

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80  # 修改成自己的prot(端口占用的时候在修改)

# https related config
#https: 注释
# https port for harbor, default is 443
#  port: 443 注释
# The path of cert and key files for nginx
#  certificate: /your/certificate/path 注释
#  private_key: /your/private/key/path 注释

下载依赖

./prepare

启动harbor

docker-compose -f /home/harbor/docker-compose.yml -d

验证是否启动成功

docker ps # 查看是否9个容器都启动了!!!!!

去所有服务器配置harbor库

insecure-registries 为自己harbor的地址

[root@jenkins-server ~]# vim /etc/docker/daemon.json
[root@jenkins-server ~]# cat /etc/docker/daemon.json
{
        "insecure-registries": ["http://192.168.10.23"]
}

配置harbor后重启docker

systemctl restart docker

在项目中添加dockerfile 文件

FROM java:8  #java 项目依赖的jdk
COPY target/*.jar gateway.jar
ENV JAVA_OPTS="-XX:+UseG1GC"
ENTRYPOINT exec java $JAVA_OPTS -jar /gateway.jar
EXPOSE 9081

jenkins 添加任务单一maven项目

image.png

image.png

image.png

image.png

#!/bin/bash -ilex
source /etc/profile
docker build . -t 121.199.37.244:7070/library/gateway
docker login 121.199.37.244:7070 -u admin -p Harbor12345
docker push 121.199.37.244:7070/library/gateway
docker logout 121.199.37.244:7070
docker login 121.199.37.244:7070 -u admin -p Harbor12345
docker stop gateway |true
docker rm -f gateway |true
docker rmi 121.199.37.244:7070/library/gateway |true
docker pull 121.199.37.244:7070/library/gateway
docker run -d --name gateway -p 9081:9081 121.199.37.244:7070/library/gateway

执行脚本报错

docker command not found

# 进入jenkins 容器
docker exec -it jenkins_container_id bash
# 执行
apt-get update && apt-get install -y docker.io 
# 或者在启动容器是加入挂在
docker run -v /var/run/docker.sock:/var/run/docker.sock 
-v $(which docker):$(which docker)  
-p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

jenkins添加父子模块

image.png

clean install -pl eureka-server -am -amd -Dmaven.test.skip=true

image.png