一、镜像加速
登录阿里云容器工作台
进去后选择镜像加速,就能看到自己账号下的镜像加速地址
复制代码到自己虚拟机中执行
查看是否存在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
出现以上图片中的内容,说明镜像拉取成功,阿里云镜像加速设置正常
二、使用公有镜像仓库
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 history [镜像名:版本号]
三、搭建私有镜像仓库harbor
1、Harbor是什么
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做了封装,扩展了自己的业务模板。
【架构解读】
代理层:代理层实质上是一个 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安装
- 可以参考kebesphere官网使用helm安装: https://kubesphere.io/zh/docs/v3.3/devops-user-guide/how-to-integrate/harbor/
- 使用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
4、安装Harbor
1、下载安装包
可以去gitgub网站把包下载下来,再手动上传~
也可以使用我网盘提供下载好的安装包
链接: 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文件是镜像文件,离线包安装的时候会导入镜像
3、配置harbor.yml
1)不带认证的配置
hostname配置的是私网IP,外部可以通过公网ip然后加上暴露的端口号进行访问~~~~
docker login hostname配置的ip(私网):端口号 -uadmin -pxxx
数据存储目录,改成自定义的位置 /data/harbordata/
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 ps
查看安装的镜像 docker images
实现开机自动启动 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
harbor上必须先建立项目,才能上传镜像,在“项目”菜单下面选择“新建项目”
新建自己的镜像仓库lyc-project-images
修改docker的daemon.json文件
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://cn4touzk.mirror.aliyuncs.com"]
"insecure-registries": ["192.168.80.51"]
}
重启
[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加密方式搭建教程。