● 开发人员每天将代码提交到Gitlab代码仓库。
● Jenkins从Gitlab中拉取项目代码,编译并打成jar包,然后构建Docker镜像,将镜像上传到Harbor私有仓库。
● Jenkins发送SSH远程命令,让生产部署服务器从Harbor私有仓库拉取镜像到本地,然后创建容器。
● 最后,用户可以访问到容器。
服务器名称 | IP地址 | 安装的软件 |
---|---|---|
代码托管服务器 | 192.168.18.100 | Gitlab(已安装) |
持续集成服务器 | 192.168.18.101 | Jenkins(已安装)、Maven(已安装)、Docker18.06.1-ce |
Docker仓库服务器 | 192.168.18.102 | Docker18.06.1-ce、Harbor2.1.3 |
生产服务器 | 192.168.18.103 | Docker18.06.1-ce |
● Harbor是在IP为192.168.18.102的服务器上安装的,并且使用的Docker Compose进行安装,而Docker Compose依赖于Docker,所以需要先安装Docker。
● 关闭防火墙。
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.3.tgz
tar -zxvf harbor-offline-installer-v2.1.3.tgz -C /usr/local
cd /usr/local/harbor
mv harbor.yml.tmpl harbor.yml
vim harbor.yml
# 修改部分
hostname: 192.168.18.102
http:
port: 85
# 将https注释掉
# 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
./install.sh
# 启动
docker-compose up -d
# 停止
docker-compose stop
# 重新启动
docker-compose restart
● 访问地址:http://192.168.1.102:85。
● Harbor的默认账户和密码:admin/Harbor12345。
创建项目
● Harbor的项目分为公开和私有。
● 公开项目:所有的用户都可以访问,通常存放公共的镜像,默认有一个library公开项目。
● 私有项目:只有授权用户才可以访问,通常存在项目本身的镜像。
● 我们可以为微服务创建一个项目:
角色 | 权限说明 |
---|---|
访客 | 对于指定的项目拥有只读权限 |
开发人员 | 对于指定的项目拥有读写权限 |
维护人员 | 对于指定的项目拥有读写权限,创建webhooks |
项目管理员 | 除了读写权限,同时拥有用户管理/镜像扫描等管理权限 |
docker pull mysql:5.7
docker images
标签tag需要遵循一定的规范,如上图Harbor界面所示。
docker tag mysql:5.7 192.168.18.102:85/volunteer/mysql:5.7
docker push 192.168.18.102:85/volunteer/mysql:5.7
之所以报错,是因为Docker没有将Harbor加入到信任列表中。
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["192.168.18.102:85"],
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
systemctl daemon-reload
systemctl restart docker
cd /usr/local/harbor
docker-compose restart
docker push 192.168.18.102:85/volunteer/mysql:5.7
docker login -u dhy -p pwd 192.168.18.102:85
docker push 192.168.18.102:85/volunteer/mysql:5.7
前提说明
● 服务器的IP是192.168.18.103。
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["192.168.18.102:85"],
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
重启Docker:
systemctl daemon-reload
systemctl restart docker
docker login -u dhy -p pwd 192.168.18.102:85
docker pull 192.168.18.102:85/volunteer/mysql:5.7