Jenkins+Docker+SpringCloud微服务持续集成之 容器管理
目录- 目标:
- 一:服务器配置docker环境
- 二: Jenkins使用Dockerfile 制作镜像
- 三:harbor服务器配置harbor仓库
- 四:在Jenkins上 上传镜像到Harbor
- 五: 应用服务器从Harbor上拉取镜像
目标:
需要在Jenkins 主机上安装docker 环境。配置一台Harbor服务器,配置一台应用服务器(配置docker环境)。
实现,Jenkins使用Dockerfile 将 微服务的jar 包制作成镜像,上传到harbor仓库。然后,生产服务器能够从harbor仓库中拉取镜像,并部署为容器
一:服务器配置docker环境
在Jenkins服务器,harbor服务器,web-server 服务器上配置:
关闭防火墙和selinux ,安装必要的软件包
systemctl disable firewalld --now
setenforce 0
sed -i '/^SELINUX/ s/enforcing/disabled/g' /etc/selinux/config
yum -y install yum-utils device-mappper-persistent-data lvm2
yum-utils 提供了yum-config-manager
device mapper 存储驱动程序需要device-mapper-persistent-data和lvm2
Device Mapper是Linxu2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源的块设备驱动提供了一个高度模块化的内核架构。
设置下载的镜像仓库为阿里的源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce,查看版本
yum -y install docker-ce
docker -v
启动Docker,配置阿里云镜像加速
阿里云配置镜像加速:
登录进入阿里云----->点击控制台----->产品与服务搜索"容器镜服务"
----->镜像工具下,点击镜像加速器---->选择合适的操作系统(centos)--->复制代码,服务器上执行
systemctl enable docker --now
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://*******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二: Jenkins使用Dockerfile 制作镜像
我们利用Dockerfile制作一个Eureka注册中心的镜像
上传Eureka的jar包到Jenkins服务器
链接:https://pan.baidu.com/s/191_Gda6dYPjD-Rw_KyMYIQ?pwd=8rwc
提取码:8rwc
ls tensquare_eureka_server-1.0-SNAPSHOT.jar
编写Dockerfile,暴露端口为10086
tee ./Dockerfile <<-'EOF'
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 10086
ENTRYPOINT ["java","-jar","/app.jar"]
EOF
构建镜像
docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 .
创建容器
docker images
docker run -i --name=eureka -p 10086:10086 eureka:v1
将容器内部的10086与外部的10086端口映射.这样,可以通过访问外部的10086端口,访问到内部的10086端口
浏览器访问
三:harbor服务器配置harbor仓库
harbor 的安装需要先安装Docker,并启动(已完成)
安装docker-compose
链接:https://pan.baidu.com/s/1EIu9DRpZ649gjzgFOKLg-w?pwd=q4p7
提取码:q4p7
ls docker-compose
chmod +x docker-compose
mv docker-compose /usr/local/bin/
ls /usr/local/bin/docker-compose
安装Harbor
链接:https://pan.baidu.com/s/1PIwIPTL4s4Z3qfFj0KTz4A?pwd=y7w2
提取码:y7w2
ls harbor-offline-installer-v1.9.2.tgz
tar -zxvf harbor-offline-installer-v1.9.2.tgz
mv harbor /opt/harbor
cd /opt/harbor/
修改Harbor的配置(修改hostname和port)
vim harbor.yml
5// hostname: 192.168.23.204
10// port: 85
安装Harbor
docker必须启动状态
./prepare
./install.sh
启动Harbor和 Harbor的控制命令
docker-compose up -d 启动
#其他控制指令:
docker-compose stop 停止
docker-compose restart 重新启动
浏览器访问
默认账户密码:admin/Harbor12345
创建新的用户
创建新项目,配置新项目的成员
将成员添加到项目
角色 | 权限说明 |
---|---|
访客 | 对于指定项目拥有只读权限 |
开发人员 | 对于指定项目拥有读写权限 |
维护人员 | 对于指定项目拥有读写权限,创建 Webhooks |
项目管理员 | 除了读写权限,同时拥有用户管理/镜像扫描等管理权限 |
以新用户登录Harbor
四:在Jenkins上 上传镜像到Harbor
给镜像打上标签
docker tag eureka:v1 192.168.23.204:85/tensquare/eureka:v1
将Harbor地址加入到Docker信任列表
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://k0ki64fw.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.23.204:85"]
}
systemctl restart docker
如果不加上信任列表,则会报错:
The push refers to repository [192.168.23.204:85/tensquare/eureka]
Get "https://192.168.23.204:85/v2/": http: server gave HTTP response to HTTPS client
登录Harbor
#docker login -u 用户名 -p 密码 仓库地址
docker login -u om -p Abcd1234 192.168.23.204:85
上传镜像
docker push 192.168.23.204:85/tensquare/eureka:v1
五: 应用服务器从Harbor上拉取镜像
安装配置docker(以完成),将Harbor仓库添加到Docker信任列表
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://k0ki64fw.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.23.204:85"]
}
systemctl restart docker
登录Harbor,拉取镜像
docker login -u tom -p Abcd1234 192.168.23.204:85
docker pull 192.168.23.204:85/tensquare/eureka:v1
docker images
启动容器,浏览器访问
docker run -i --name=eureka -p 10086:10086 192.168.23.204:85/tensquare/eureka:v1
至此,docker 的harbor仓库搭建完毕,并且,Jenkins能够上传镜像到harbor,生 产服务器可以从harbor上拉取镜像