一、镜像加速

登录阿里云容器工作台

第六节  Docker镜像仓库_json

进去后选择镜像加速,就能看到自己账号下的镜像加速地址

第六节  Docker镜像仓库_docker_02

复制代码到自己虚拟机中执行

查看是否存在daemon.json文件
cat /etc/docker/daemon.json

mkdir  /etc/docker/daemon.json

添加daemon.json配置文件
sudo vim /etc/docker/daemon.json
-------------------------------------------------------------
{
  "registry-mirrors": ["https://cn4touzk.mirror.aliyuncs.com"]
}
--------------------------------------------------------------
cat /etc/docker/daemon.json

sudo systemctl daemon-reload
sudo systemctl restart docker

查看docker状态
systemctl status docker.service

测试拉取镜像
docker pull

第六节  Docker镜像仓库_Docker_03

出现以上图片中的内容,说明镜像拉取成功,阿里云镜像加速设置正常


二、使用公有镜像仓库

sudo docker login --username=lycshnr2022 registry.cn-hangzhou.aliyuncs.com  //登录阿里云个人镜像仓库

docker tag 6a5ee1954d86  registry.cn-hangzhou.aliyuncs.com/liyingchun-images/mynginx:1.26  //打tag标签

docker push registry.cn-hangzhou.aliyuncs.com/liyingchun-images/mynginx:1.26  //推送打完标签的镜像到阿里云仓库

这样我们就可以把镜像上传到我们个人的阿里云仓库中

第六节  Docker镜像仓库_docker_04

第六节  Docker镜像仓库_Docker_05

查看镜像历史记录

docker history [镜像名:版本号]

第六节  Docker镜像仓库_docker_06


三、搭建私有镜像仓库harbor

1、Harbor是什么

官网:https://goharbor.io/

Harbor 是由 VMware 开源的一款云原生制品仓库,Harbor 的核心功能是存储和管理 Artifact。Harbor 允许用户用命令行工具对容器镜像及其他 Artifact 进行推送和拉取,并提供了图形管理界面帮助用户查看和管理这些 Artifact。在 Harbor 2.0 版本中,除容器镜像外,Harbor 对符合 OCI 规范的 Helm Chart、CNAB、OPA Bundle 等都提供了更多的支持。


  • 为什么需要harbor?
    Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。

Harbor的特性

(1)基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。

(2)基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。

(3)支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。

(4)镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。

(5)图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。

(6)审计管理:所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

(7)支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。

(8)Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。



第六节  Docker镜像仓库_Docker_07

【架构解读】
代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型
和 URI 转发给不同的后端服务进行处理。

功能层:
Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。
Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。
JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。
Docker Distribution:Harbor 通过 Distribution 实现 Artifact 的读写和存取等功能。
RegistryCtl:Docker Distribution 的控制组件。
Notary(可选) :基于 TUF 提供镜像签名管理的功能。
扫描工具(可选) :镜像的漏洞检测工具。
ChartMuseum(可选) :提供 API 管理非 OCI 规范的 Helm Chart,随着兼容 OCI 规范的 Helm Chart 在社区上被更广泛地接受,
Helm Chart 能以 Artifact 的形式在 Harbor 中存储和管理,不再依赖 ChartMuseum,因此 Harbor 可能会在后续版本中移除对 
ChartMuseum 的支持。

数据层:
Redis:主要作为缓存服务存储一些生命周期较短的数据,同时对于 JobService 还提供了类似队列的功能。
PostgreSQL:存储 Harbor 的应用数据,比如项目信息、用户与项目的关系、管理策略、配置信息、Artifact 的元数据等等。
Artifact 存储:存储 Artifact 本身的内容,也就是每次推送镜像、Helm Chart 或其他 Artifact 时,数据最终存储的地方。
默认情况下,Harbor 会把 Artifact 写入本地文件系统中。用户也可以修改配置,将 Artifact 存储在外部存储中,
例如亚马逊的对象存储 S3、谷歌云存储 GCS、阿里云的对象存储 OSS 等等。

2、安装方式

安装方式主要有三张:

  • 下载离线安装包手动安装【推荐】
  • helm安装
  • 使用kubesphere开启OpenPitrix后,在应用商店内安装

3、安装docker-compose

docker-compose概述

Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。Compose 用 YAML 文件配置应用程序的服务。
使用单一命令,可以从 YAML 文件配置中创建并启动所有服务。适用于所有环境生产、开发、测试以及 CI/CD 工作流程。


功能:

多容器管理:允许用户在一个YAML文件中定义和管理多个容器

服务编排:配置容器间的网络和依赖关系

一键部署:使用docker-compose up命令启动、停止和重建服务

用途:简化多容器应用的配置和管理,适用于开发、测试和生产环境中的复杂应用。



Docker Compose与Docker两者关系

Docker 是 Docker Compose 的前提,Docker Compose 是为了简化使用 Docker 时多容器应用的管理和部署而设计的。

两者之间相辅相成,Docker 提供容器化的核心功能,Docker Compose 则管理这些容器的组合和交互。

两者面向不同用户,Docker 面向任何需要容器化应用的用户,Docker Compose 则面向需要同时管理多个容器的开发者和运维团队。


Compose 安装

1、下载docker-compose软件:

wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64

2、改名并移动软件到/usr/local/bin

mv docker-compose-linux-x86_64     docker-compose
 
mv docker-compose-linux-x86_64   /usr/local/bin/
3、给权限 chmod +x docker-compose
4、查看版本docker-compose version

第六节  Docker镜像仓库_Docker_08


4、安装Harbor

1、下载安装包

可以去gitgub网站把包下载下来,再手动上传~

第六节  Docker镜像仓库_docker_09

也可以使用我网盘提供下载好的安装包

链接: https://pan.baidu.com/s/1vPnFJRduZgdZ3NKhAAPovg?pwd=swn3 提取码: swn3

--来自百度网盘超级会员v5的分享

2、解压安装包

解压命令:tar -xvf harbor-offline-installer-v2.10.3.tgz -C /usr/local/bin/
给harbor目录权限 chmod +x harbor
进hardor目录 cd hardor
软连接sudo ln -s  /usr/local/bin/docker-compose   /usr/bin/docker-compose

【说明】
LICENSE:许可文件。
common.sh:安装脚本的工具脚本。
harbor.yml.tmpl:配置文件的模板文件。
install.sh:安装脚本。
prepare:准备脚本,将配置文件的内容注入各组件的配置文件中
harbor/harbor.v2.10.0.tar.gz文件是镜像文件,离线包安装的时候会导入镜像

第六节  Docker镜像仓库_docker_10

3、配置harbor.yml

1)不带认证的配置

hostname配置的是私网IP,外部可以通过公网ip然后加上暴露的端口号进行访问~~~~

docker login hostname配置的ip(私网):端口号 -uadmin -pxxx

第六节  Docker镜像仓库_Docker_11

数据存储目录,改成自定义的位置 /data/harbordata/

第六节  Docker镜像仓库_json_12

4、开始安装harbor

执行./install.sh命令后,程序会自动安装

显示以下内容,表示安装成功
[Step 5]: starting Harbor ...
WARN[0000] /usr/local/bin/harbor/docker-compose.yml: `version` is obsolete 
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                                                            0.1s 
 ✔ Container harbor-log         Started                                                                                                                            1.6s 
 ✔ Container redis              Started                                                                                                                            2.4s 
 ✔ Container harbor-portal      Started                                                                                                                            2.3s 
 ✔ Container registryctl        Started                                                                                                                            2.5s 
 ✔ Container harbor-db          Started                                                                                                                            2.7s 
 ✔ Container registry           Started                                                                                                                            2.6s 
 ✔ Container harbor-core        Started                                                                                                                            2.0s 
 ✔ Container nginx              Started                                                                                                                            2.7s 
 ✔ Container harbor-jobservice  Started                                                                                                                            2.4s 
✔ ----Harbor has been installed and started successfully.----

第六节  Docker镜像仓库_Docker_13

查看运行的容器  docker ps

第六节  Docker镜像仓库_docker_14

查看安装的镜像  docker images

第六节  Docker镜像仓库_Docker_15

实现开机自动启动 harbor

[root@lyc-80-51 harbor]# 
------------------------------------------------------------------------------------------
 cat > /lib/systemd/system/harbor.service <<-EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF
-----------------------------------------------------------------------------------------
[root@lyc-80-51 harbor]# 
 systemctl daemon-reload && systemctl enable harbor

5、登录harbor

输入主机IP:80        账号 admin               密码 123456

第六节  Docker镜像仓库_json_16

harbor上必须先建立项目,才能上传镜像,在“项目”菜单下面选择“新建项目”

新建自己的镜像仓库lyc-project-images

第六节  Docker镜像仓库_Docker_17

修改docker的daemon.json文件

vim /etc/docker/daemon.json


{

       "registry-mirrors": ["https://cn4touzk.mirror.aliyuncs.com"]

       "insecure-registries": ["192.168.80.51"] 

}

第六节  Docker镜像仓库_Docker_18

重启

[root@lyc-80-51 harbor]# systemctl daemon-reload && systemctl restart docker   重启docker

[root@lyc-80-51 harbor]# docker-compose down   关闭

[root@lyc-80-51 harbor]# docker-compose up -d   启动

6、登录个人镜像仓库

登入私有镜像仓库:
docker login http://192.168.80.51
账号admin	密码123456

7、上传/下载harbor镜像

登入私有镜像仓库:
docker login  http://192.168.80.51
账号admin	密码123456
----------------------------------------------------------------------------------------------------
[root@lyc-80-51 opt]# docker login 192.168.80.51
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

---------------------------------------------------------------------------------------------------------
【上传镜像】
docker images  /查看系统镜像有哪些
docker tag nginx:latest 192.168.80.51/lyc-project-images/nginx:v0.1  /给想要上传的镜像打标签
docker push 192.168.80.51/lyc-project-images/nginx:v1    /上传镜像到harbor

【拉取镜像】
拉取镜像:
docker login  http://192.168.80.51
账号admin	密码123456
docker pull 192.168.80.51/lyc-project-images/nginx:0.1     /从harbor拉取镜像到本地
docker images    /查看系统镜像有哪些

备注:本次只尝试http方式搭建harbor仓库,未尝试https加密搭建,抽空会再出一套https加密方式搭建教程。