ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker-compose安装Harbor镜像仓库

2021-06-20 15:59:42  阅读:290  来源: 互联网

标签:compose cn nginx Harbor harbor 镜像 Docker docker lc


目录

1. 准备事项

安装准备,详见官网:Harbor Installation Prerequisites

  • 检测80端口是否被占用:netstat -tunlp|grep 80,若使用其它端口,需在2.2节配置的hostname中加上端口号

  • 环境:docker、docker-compose、https

image-20210324163804178

1.1. 安装docker

  • 移除电脑上原有的dockers
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine
  • 安装docker
yum install -y yum-utils
 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
yum install docker-ce
  • 配置阿里云镜像加速器

    加速器地址:阿里云控制台–容器镜像服务–镜像工具–镜像加速器

mkdir -p /etc/docker
 
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
EOF
  • 验证
systemctl daemon-reload &&
systemctl restart docker &&
systemctl enable docker &&
systemctl status docker

1.2. 安装docker-compose

- 授权
chmod +x

- 移动并改名(去掉版本号)
mv [] /usr/local/bin/docker-compose

- 验证
docker-compose version

image-20210620143258367

1.3. 配置HTTPS访问证书

  • 在工作目录下创建证书存放目录
mkdir ssl 
cd ssl 
  • 创建证书
openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt

# 一路回车5次直至出现Common Name 输入(因为是CA,可不输入IP或域名):Harbor Cert Root CA  
注:Harbor为自定义名称

image-20210620141557774

  • 生成证书签名请求
openssl req  -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -out harbor.csr

# 一路回车5次出现Common Name 输入IP或域名:lc.harbor.cn

image-20210620141648882

  • 新建extfile.cnf
--- vim extfile.cnf  --- 

subjectAltName = @alt_names
extendedKeyUsage = serverAuth

[alt_names]
# 域名,如有多个用DNS.2,DNS.3…来增加
DNS.1 = lc.harbor.cn
DNS.2 = *.harbor.cn
# IP地址, 服务器的ip
IP.1 = 172.16.16.104
IP.2 = 127.0.0.1
  • 生成证书
openssl x509 -req -days 3650 -in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out harbor.crt

image-20210620141826278

1.4. 为docker login配置证书

  • 方式一:配置docker的CA证书,不需要重启docker(墙裂建议)
- 创建目录
mkdir -p /etc/docker/certs.d/lc.harbor.cn/
- 分发证书
cp ca.crt /etc/docker/certs.d/lc.harbor.cn/
  • 方式二:配置insecure-registries,跳过https认证,重启docker生效
vim /etc/docker/daemon.json

"insecure-registries": ["xxx","lc.harbor.cn"],

-----------
- 重启docker
systemctl restart docker

image-20210620141940796

  • 方式三:配置系统级CA认证,需重启docker
- 分发证书
scp ca.crt root@172.16.16.103:/etc/pki/ca-trust/source/anchors/

- 更新配置并重启docker
update-ca-trust extract &&
systemctl restart docker

2. docker-compose安装Harbor

2.1. 下载harbor安装包

tar zxvf harbor-offline-installer-v2.2.2.tgz

image-20210620142144226

2.2. 配置harbor

  • hostname:本机IP
  • 证书地址:见1.3节
  • 仓库地址:自定义
- 编辑harbor.yml.tmpl(按需修改)

vim harbor.yml.tmpl
------------------------

hostname: 172.16.16.104

http:
  port: 80
https:
  port: 443
  certificate: /root/harbor/ssl/harbor.crt
  private_key: /root/harbo/ssl/harbor.key

harbor_admin_password: Harbor12345

------------------------

- 生成harbor.yml文件
cp harbor.yml.tmpl harbor.yml

image-20210620143010495

  • 解压镜像
docker load --input harbor.v2.2.2.tar.gz

image-20210620142508960

  • 执行
./prepare
./install.sh

image-20210620143353484

3. 登录harbor仓库

3.1. 网页登录

  • 配置hosts
win10 hosts路径:C:\Windows\System32\drivers\etc\hosts
------------------

121.89.211.133 lc.harbor.cn 

image-20210620143924267

3.2. docker登录

  • 配置hosts
- vim /etc/hosts(公网/私网按需配置)
------------------------

172.16.16.104 lc.harbor.cn 
  • docker login
docker login lc.harbor.cn -uadmin

image-20210620144412989

3.3. 推送镜像

- 拉取官方镜像(默认tag为latest)
docker pull nginx

- 查看镜像
docker images |grep nginx

- 打tag
docker tag nginx:latest lc.harbor.cn/library/nginx:latest

- 推送(默认推送镜像需要登录)
docker push lc.harbor.cn/library/nginx:latest

image-20210620144722610

  • 网页上查看镜像

image-20210620144905455

3.4. 拉取镜像

  • 先移除本地打了tag的镜像
docker rmi lc.harbor.cn/library/nginx:latest
  • 拉取镜像
docker pull lc.harbor.cn/library/nginx:latest

image-20210620145218819

4. Harbor后台API2.0

4.1. 准备事项

  • API手册链接位于网页左下角
  • 标记多个tag并推送(不能使用相同的镜像)
docker tag nginx:1.17.0 lc.harbor.cn/library/nginx:100
docker tag nginx:1.18.0 lc.harbor.cn/library/nginx:18
docker tag nginx:1.19.0 lc.harbor.cn/library/nginx:19
docker tag nginx:1.20.0 lc.harbor.cn/library/nginx:20
docker tag nginx:latest lc.harbor.cn/library/nginx:latest

推送顺序:latest,100,18,19,20

4.2. HarborAPI2.0删除镜像示例

  1. 获取项目/仓库下的镜像信息
image_info=$(curl -s -k -u admin:Harbor12345 -X GET "https://lc.harbor.cn/api/v2.0/projects/library/repositories/nginx/artifacts?page=1&page_size=10&with_tag=true&with_label=false&with_scan_overview=false&with_signature=false&with_immutable_status=false" -H "accept: application/json")

echo $image_info
  1. 提取出镜像tag
tags="$(echo "$image_info" | tr , '\n' | grep name | cut -d '"' -f4)"

echo $tags

image-20210620153727861

  1. 镜像tag排序,取出最近3个镜像以外的tag
for tag in `echo ${tags} | awk 'BEGIN{i=1}{gsub(/ /,"\n");i++;print}' | awk -F. '{print $NF}' | sed "1,3d"`;
do
curl -s -k -u admin:Harbor12345 -X DELETE https://lc.harbor.cn/api/v2.0/projects/library/repositories/nginx/artifacts/${tag}
done

image-20210620153807387

image-20210620153931583

标签:compose,cn,nginx,Harbor,harbor,镜像,Docker,docker,lc
来源: https://blog.csdn.net/qq_14999375/article/details/118070832

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有