6 Star 72 Fork 28

JustryDeng / notebook

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
[07]使用harbor搭建docker私有镜像仓库.md 6.27 KB
一键复制 编辑 原始数据 按行查看 历史
JustryDeng 提交于 2023-01-19 15:02 . 通过idea插件快速部署docker

使用harbor搭建docker私有镜像仓库

准备工作

确保安装启动有docker和docker-compose

安装教程见[CentOS 7安装docker、docker-compose](./[04]CentOS 7安装docker、docker-compose.md)

查看docker版本

docker -v

image-20221203082303705

查看docker-compose版本

docker-compose -v

image-20221204133405395

使用harbor搭建docker私有镜像仓库

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求

第一步:下载harbor并解压

你也可以直接去官网https://github.com/goharbor/harbor/releases下载,然后传进服务器进行解压

cd /opt
# 下载
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
# 解压
tar -xvf harbor-offline-installer-v2.5.3.tgz
cd harbor

image-20221204135512469

第二步:修改配置

mv harbor.yml.tmpl harbor.yml
vim harbor.yml

image-20221204135922306

第三步: 进行映射配置

# 编辑/etc/docker/daemon.json,增加insecure-registries配置
vim /etc/docker/daemon.json

添加http registries

写docker私服的ip和端口,这里即:ip写自己机器的ip即可,端口填写配置文件中设置的端口

{
    "insecure-registries": ["http://47.105.39.189:8635"]
}

重启docker

systemctl daemon-reload
systemctl restart docker

第四步:启动harbor

sh install.sh

image-20221204140329454

image-20221204140329454

第五步:验证Harbor是否运行正常

请确保前面第二步设置的端口(这里即:8635)已开放

访问http://47.105.39.189:8635

image-20221204140505165

image-20221204140523549

由此可知,harbor运行正常

第六步:验证推送镜像

提示:docker是通过tag来知道镜像应该往哪里推送的,所以我们要推送前,需要先打对应的tag

  1. 查看已有镜像

    [root@iZm5ea6hfv6pmn30ook2l7Z ~]# docker images
    nginx                            latest         88736fe82739   2 weeks ago     142MB
  2. 打tag,标明docker镜像仓库地址

    harbor的tag格式要求为:{仓库地址}:{仓库端口}/{harbor项目名}/{短镜像名}:{标签}

    实际上,即:{仓库地址}:{仓库端口}/{harbor项目名}/{短镜像名}作为了一个镜像全名

    注:安装harbor后,harbor自带了一个默认的项目library,如果不想往这个项目里面推送镜像的话,可以自己在harbor上创建项目,然后打tag时,对应位置换成该项目名即可

    [root@iZm5ea6hfv6pmn30ook2l7Z ~]# docker tag nginx:latest 47.105.39.189:8635/library/nginx:latest
    [root@iZm5ea6hfv6pmn30ook2l7Z ~]#
    [root@iZm5ea6hfv6pmn30ook2l7Z ~]#
    [root@iZm5ea6hfv6pmn30ook2l7Z ~]# docker images
    REPOSITORY                         TAG            IMAGE ID       CREATED         SIZE
    47.105.39.189:8635/library/nginx   latest         88736fe82739   2 weeks ago     142MB
    nginx                              latest         88736fe82739   2 weeks ago     142MB
  3. 登录harbor

    # 登出:docker logout
    # docker私服如果是http的. 那么登录前,请确保当前机器已进行第三步,ip和端口写docker私服的ip和端口
    docker login -u admin -p dengshuai 47.105.39.189:8635

    image-20221204142348452

    注:根据日志提示可以将密码写到一个文件/etc/docker_passwd中。使用cat /etc/docker_passwd | docker login --username 用户名 --password-stdin进行登录

  4. 推送镜像

    [root@iZm5ea6hfv6pmn30ook2l7Z harbor]# docker push 47.105.39.189:8635/library/nginx:latest
    The push refers to repository [47.105.39.189:8635/library/nginx]
    6cffb086835a: Pushed
    e2d75d87993c: Pushed
    5a5bafd53f76: Pushed
    f86e88a471f4: Pushed
    f7ed3797e296: Pushed
    ec4a38999118: Pushed
    latest: digest: sha256:6ad8394ad31b269b563566998fd80a8f259e8decf16e807f8310ecc10c687385 size: 1570
    [root@iZm5ea6hfv6pmn30ook2l7Z harbor]#
  5. 在harbor管理界面查看镜像

    image-20221204142817815

    由此可见,成功了!

第七步(可选):开启垃圾清理功能

当推送到harbor的镜像与之前harbor上已有的镜像一样时(连tag也一样),之前的镜像的该tag会被清除,冲突的tag会出现在最新推送上来的镜像上,之前的镜像就变成了无tag的垃圾镜像,建议清理

image-20230119150120953

相关资料

1
https://gitee.com/JustryDeng/notebook.git
git@gitee.com:JustryDeng/notebook.git
JustryDeng
notebook
notebook
master

搜索帮助