Docker技术相关学习三

一、Docker镜像仓库管理

**1.docker仓库:**用于存储和分发docker镜像的集中式存储库,开发者可以将自己创建的镜像推送到仓库中也可以从仓库中拉取所需要的镜像。

2.docker仓库:

公有仓库(docker hub):任何人都可以直接访问和使用其中的镜像

私有仓库:由组织或个人自己搭建和管理的,用于存储内部使用并且不希望公开的镜像

3.docker hub使用方法:

登录官方仓库:docker login

输入用户名和密码后即可登录

登录信息保存的位置:

bash 复制代码
[root@docker ~]# cd .docker/
[root@docker .docker]# ls
config.json
[root@docker .docker]# cat config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "dGltaW5nbGVlOjY3NTE1MTVtaW5nemxu"
}
}

docker仓库的工作原理:

仓库中三个角色:

index docker索引服务,负责并维护有关用户、镜像的校验以及公共命名空间信息

registry docker仓库:镜像和图标的仓库,不具有本地数据库以及不提供用户认证,通过index auth service的token方式进行认证

registry client:docker充当registry客户端来维护推送和拉取以及客户端授权

pull原理:

docker客户端向Index发送镜像拉取请求并完成与index的认证

index发送认证token和镜像位置给docker client

docker client携带token和根据index指引的镜像位置连接registry

registry会根据client持有的token和index核验身份的合法性

index确认此token的合法性

registry会根据client的请求传递镜像到客户端

push原理:

client向index发送上传请求并完成用户认证

index会发送token给client来证明client的合法性

client携带index提供的token连接registry

registry向index询问token的合法性

index证实token的合法性

registry开始接收客户端上传的镜像

4.docker搭建私有仓库:

下载registry镜像:docker pull registry

开启registry:docker run -d -p 5000:5000 --restart=always --name registry registry

上传镜像到仓库中:

给要上传的镜像贴标签:

docker tag busybox:latest 172.25.254.100:5000/busybox:latest

配置非加密端口(docker在上传的过程中默认使用的是https,但是在没有建立https认证的情况下需要做以下配置):

bash 复制代码
vim /etc/docker/daemon.json
{
    "insecure-registries": ["http://172.25.254.100:5000"]
}
systemctl restart docker

上传镜像:

docker push 172.25.254.100:5000/busybox:lates

为registry提取加密传输

生成认证的key和证书:

bash 复制代码
[root@docker ~]# openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout certs/test.org.key \
-addext "subjectAltName = DNS:reg.test.org" \ #指定备用名称
-x509 -days 365 -out certs/test.org.crt

启动registry仓库:

bash 复制代码
[root@docker ~]# docker run -d -p 443:443 --restart=always --name registry \
> --name registry -v /opt/registry:/var/lib/registry \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/test.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/test.org.key registry

为客户端建立证书:

bash 复制代码
[root@docker docker]# mkdir /etc/docker/certs.d/reg.test.org/ -p
[root@docker docker]# cp /root/certs/test.org.crt
/etc/docker/certs.d/reg.test.org/ca.crt
[root@docker docker]# systemctl restart docker

为仓库建立登录认证:

安装建立认证文件的工作包:

dnf install httpd-tools -y

建立认证文件:

bash 复制代码
[root@docker ~]# mkdir auth
[root@docker ~]# htpasswd -Bc auth/htpasswd xiao #-B 强制使用最安全加密方式,
默认用md5加密
New password:
Re-type new password:
Adding password for user xiao

添加认证到registry容器中:

bash 复制代码
[root@docker ~]# docker run -d -p 443:443 --restart=always --name registry \
> --name registry -v /opt/registry:/var/lib/registry \
> -v /root/certs:/certs \
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/timinglee.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/timinglee.org.key \
> -v /root/auth:/auth \
> -e "REGISTRY_AUTH=htpasswd" \
> -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
> -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
> registry

登录测试:docker login reg.test.org,输入用户名和密码可以登录成功

为仓库开启认证后必须登录仓库才能进行镜像上传

二、构建企业私有仓库(harbor)

1.harbor提供的主要功能和特点:

基于角色的控制访问,即可以为不同的用户和用户组分配不同的权限来增强安全性

镜像复制,支持在不同的harbor实例之间复制镜像

图形化用户界面,提供直观的web界面,便于管理镜像仓库

审计日志,记录了对镜像仓库的各种操作

垃圾回收,可以清理不再使用的镜像节省存储空间

2.部署harbor:

bash 复制代码
[root@docker ~]# tar zxf harbor-offline-installer-v2.5.4.tgz
[root@docker ~]# ls
anaconda-ks.cfg certs harbor-offline-installer-v2.5.4.tgz
auth harbor
[root@docker ~]# cd harbor/
[root@docker harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker harbor]# vim harbor.yml

hostname: reg.test.org
certificate: /data/certs/test.org.crt
private_key: /data/certs/test.org.key
harbor_admin_password: xiao

./install.sh --with-chartmuseum

管理harbor仓库

docker compose stop

docker compose up -d

上传镜像:docker login reg.test.org,输入用户名和密码即可登录成功

bash 复制代码
[root@docker harbor]# docker tag busybox:latest
reg.test.org/test/busybox:latest
[root@docker harbor]# docker push reg.test.org/test/busybox:latest
相关推荐
小江的记录本3 分钟前
【JEECG Boot】 《JEECG Boot 数据字典使用教程》(完整版)
java·前端·数据库·spring boot·后端·spring·mybatis
AI成长日志3 分钟前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
鲸渔6 分钟前
【C++ 变量与常量】变量的定义、初始化、const 与 constexpr
java·开发语言·c++
i220818 Faiz Ul9 分钟前
教育资源共享平台|基于springboot + vue教育资源共享平台系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·教育资源共享平台
玛卡巴卡ldf9 分钟前
【Springboot7】ApachePOI文件导入导出
java·spring boot·sql
编程大师哥11 分钟前
VSCode中如何搭建JAVA+MAVEN
java·vscode·maven
杨浦老苏11 分钟前
轻量级RSS源处理中间件FeedCraft
人工智能·docker·ai·群晖·rss
不会写DN12 分钟前
SQL 单表操作全解
java·服务器·开发语言·数据库·sql
Devin~Y17 分钟前
大厂 Java 面试实战:从电商微服务到 AI 智能客服(含 Spring 全家桶、Redis、Kafka、RAG/Agent 解析)
java·spring boot·redis·elasticsearch·spring cloud·docker·kafka
无籽西瓜a19 分钟前
【西瓜带你学设计模式 | 第十五期 - 策略模式】策略模式 —— 算法封装与动态替换实现、优缺点与适用场景
java·后端·设计模式·软件工程·策略模式