合肥公司网站开发,关于网站建设论文,做一个打鱼网站需要多少钱,网站推广的四个阶段包括目录
registry镜像仓库概述
Docker 镜像仓库#xff08;Docker Registry#xff09;#xff1a;
registry 容器#xff1a;
私有仓库概述
搭建本地私有仓库示例
Harbor概述
harbor架构
详解构成
Harbor由容器构成
Harbor部署示例
环境准备
部署Docker-Compose服…
目录
registry镜像仓库概述
Docker 镜像仓库Docker Registry
registry 容器
私有仓库概述
搭建本地私有仓库示例
Harbor概述
harbor架构
详解构成
Harbor由容器构成
Harbor部署示例
环境准备
部署Docker-Compose服务
部署 Harbor 服务
启动Harbor
查看 Harbor 启动镜像
创建一个新项目
在其他客户端上传镜像
维护管理Harbor
通过Harbor Web创建项目
创建 Harbor 用户
查看日志
修改 Harbor.cfg 配置文件
移除 Harbor 服务容器同时保留镜像数据/数据库并进行迁移 registry镜像仓库概述
Docker 镜像仓库Docker Registry是一个用于存储和管理 Docker 镜像的中央仓库。registry 容器就是运行 Docker 镜像仓库服务的容器。
Docker 镜像仓库Docker Registry
定义 Docker 镜像仓库是一个集中存储和管理 Docker 镜像的服务。它允许用户上传、下载和分享 Docker 镜像。最常见的 Docker Registry 是 Docker 官方提供的公共注册表Docker Hub但用户也可以搭建私有 Docker 镜像仓库以在本地或私有网络中管理镜像。
功能 存储镜像 提供一个集中的地方存储 Docker 镜像。 版本控制 允许同一镜像的不同版本存在。 访问控制 可以配置访问权限使镜像仓库可以是公开的或私有的。 镜像标签 镜像可以用标签来区分不同版本或变体。 安全审计 提供审计功能追踪谁上传或下载了哪些镜像。
常见的 Docker 镜像仓库 Docker Hub 官方的公共 Docker 镜像仓库。 Quay 一个高性能、可扩展的 Docker 镜像 registry 服务提供强大的镜像管理和访问控制。 Harbor 一个开源的企业级 Docker Registry支持安全、可靠的镜像管理。
registry 容器
定义 registry 容器是运行 Docker 镜像仓库服务的 Docker 容器。它使用 registry 镜像通过在容器内提供 registry 服务允许用户在本地或私有网络中搭建自己的 Docker 镜像仓库。
运行 registry 容器的步骤
拉取 registry 镜像
docker pull registry运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartalways --name registry registry:latest-itd: 在容器中打开一个伪终端进行交互操作并在后台运行。 -v: 将宿主机的 /data/registry 目录挂载到容器的 /var/lib/registry 目录实现数据的持久化。 -p: 映射端口使得可以通过宿主机的 5000 端口访问 registry 容器的服务。 --restartalways: 容器退出时总是重启容器确保服务的持续性。 --name registry: 为容器命名为 registry。 registry:latest: 使用最新版本的 registry 镜像。
功能 提供镜像服务 允许上传、下载和管理 Docker 镜像。 数据持久化 使用 -v 参数将宿主机目录挂载到容器确保数据的持久化。 端口映射 使用 -p 参数映射宿主机端口方便外部访问 registry 服务。 自动重启 使用 --restartalways 参数保证容器在退出时自动重启。
通过搭建 registry 容器用户可以在本地或私有网络中建立自己的 Docker 镜像仓库方便镜像的管理和共享。
私有仓库概述 Docker私有仓库是指企业内部使用的仓库用于存放自身开发的企业级应用的镜像。私有仓库的主要优点包括节省网络带宽和提供镜像资源的有效利用。通过搭建本地私有仓库企业可以在内部网络中快速下载和上传镜像不受外网带宽等因素的影响。此外私有仓库还可以配置仓库认证功能以确保只有授权的人员可以访问和使用其中的镜像。
搭建本地私有仓库示例
下载 registry 镜像
docker pull registry配置 daemon.json 文件 在 /etc/docker/daemon.json 文件中添加私有镜像仓库地址同时配置其他参数
vim /etc/docker/daemon.json{insecure-registries: [192.168.41.31:5000],registry-mirrors: [https://ae3f5qei.mirror.aliyuncs.com]
}重启 Docker 服务
systemctl restart docker.serviceDocker 容器的重启策略的解析 no 默认策略。 当容器退出时不会自动重启容器。 on-failure 在容器非正常退出时退出状态非0才会触发容器的自动重启。 on-failure:3 在容器非正常退出时自动重启容器最多重启3次。 限制了容器的最大重启次数。 always 在容器退出时总是自动重启容器不考虑退出的原因。 unless-stopped 在容器退出时总是自动重启容器。 不考虑在 Docker 守护进程启动时就已经停止了的容器即使在 Docker 守护进程启动时手动停止容器也会被重启。 这些重启策略提供了对容器生命周期的不同控制选项以满足不同场景下的需求。选择适当的重启策略可以确保容器服务的可用性和稳定性。
运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restartalways --name registry registry:latest解释 -itd: 在容器中打开一个伪终端进行交互操作并在后台运行。 -v: 将宿主机的 /data/registry 目录绑定到容器的 /var/lib/registry 目录实现数据的持久化。/var/lib/registry目录是registry容器中存放镜像文件的目录 -p: 映射端口访问宿主机的 5000 端口即可访问 registry 容器的服务。 --restartalways: 容器退出时总是重启容器。 --name registry: 创建容器并命名为 registry。 registry:latest: 使用最新版本的 registry 镜像。
为镜像打标签
docker tag centos:7 192.168.41.31:5000/centos:v1上传到私有仓库
docker push 192.168.41.31:5000/centos:v1列出私有仓库的所有镜像
curl http://192.168.41.31:5000/v2/_catalog查看私有仓库的 centos 镜像有哪些 tag
curl http://192.168.41.31:5000/v2/centos/tags/list删除原有的 centos 镜像然后从私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.41.31:5000/centos:v1Harbor概述 Harbor是一个由VMware公司开源的企业级Docker Registry项目。它的目标是帮助用户快速搭建一个企业级的Docker Registry服务。 Harbor基于Docker公司开源的Registry并提供了一些企业用户需求的功能如图形管理界面、基于角色的访问控制Role Based Access Control、AD/LDAP集成以及审计日志等。此外Harbor还原生地支持中文。 Harbor的每个组件都以Docker容器的形式构建并使用docker-compose来进行部署。用于部署Harbor的docker-compose模板可以在harbor/docker-compose.yml中找到。
harbor架构 Harbor的整体架构由以下几个组件组成 代理层Proxy Layer代理层实质上是一个Nginx反向代理负责接收不同类型的客户端请求包括浏览器、用户脚本、Docker等并根据请求类型和URI转发给不同的后端服务进行处理。 功能层Functional Layer Portal基于Angular的前端应用提供Harbor用户访问的界面。 CoreHarbor的核心组件封装了大部分的业务逻辑。 JobService异步任务组件负责处理Harbor中一些耗时的功能如Artifact复制、扫描、垃圾回收等。 数据层Data Layer Redis主要作为缓存服务存储一些生命周期较短的数据并为JobService提供类似队列的功能。 PostgreSQL存储Harbor的应用数据包括项目信息、用户与项目的关系、管理策略、配置信息、Artifact的元数据等。
详解构成
Harbor 在架构上主要有 Proxy、Registry、Core services、DatabaseHarbor-db、Log collectorHarbor-log、Job services 六个组件。 Proxy代理使用Nginx作为前端代理Harbor 的 Registry、UI、Token 服务等组件都处在 nginx 反向代理后边。会将来自浏览器和Docker客户端的请求转发给后端的不同服务。 Registry注册表负责存储Docker镜像并处理Docker push/pull命令。由于要对用户进行访问控制即不同用户对 Docker 镜像 有不同的读写权限Registry 会指向一个 Token 服务强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token Registry 会通过公钥对 Token 进行解密验证。 认证方式 基于令牌Token-based认证这是Registry的默认认证方式。用户在进行Docker push/pull等操作时需要提供有效的访问令牌Token。Registry会验证令牌的有效性和权限并根据用户的权限控制对镜像的访问。 基于用户名和密码Username and Password认证用户可以使用用户名和密码进行认证以获取访问Registry的权限。这种方式需要在Registry中配置用户账户和密码并在进行操作时提供正确的用户名和密码。 基于TLS/SSL证书TLS/SSL Certificate认证Registry可以配置使用TLS/SSL证书进行认证和加密通信。客户端需要提供有效的证书来与Registry建立安全连接并进行认证和授权。 基于OAuth认证Registry可以与OAuth身份验证提供者集成以实现更强大的身份验证和授权机制。用户可以使用OAuth提供者颁发的令牌来访问Registry并根据OAuth提供者的权限进行控制。 Core services核心服务 UIharbor-ui提供图形化界面帮助用户管理Registry上的镜像并进行授权管理。 WebHook用于及时获取Registry上镜像状态的变化并将其传递给UI模块。 Token服务根据用户权限为每个Docker push/pull命令签发Token。如果请求不包含Token将被重定向到Token服务获取Token后再向Registry发起请求。 Databaseharbor-db为Core services提供数据库服务存储用户权限、审计日志、Docker镜像分组等数据。 Job services作业服务用于镜像复制可以将本地镜像同步到远程Harbor实例。 Log collector日志收集器负责收集其他组件的日志到一个统一的地方。 此外还有一个名为harbor-adminserver的组件作为后端的配置数据管理中心负责管理Harbor的配置数据而不具备其他功能。
Harbor由容器构成
Harbor的每个组件都以Docker容器的形式构建并可以使用Docker Compose进行部署。在Harbor的docker-compose.yml文件所在的目录中执行docker-compose ps命令可以查看正在运行的容器。
总共有7个容器在运行它们的名称分别是 nginx作为前端代理接收来自浏览器和Docker客户端的请求并将其转发给后端的不同服务。 harbor-jobservice用于处理Harbor中的作业任务例如镜像复制等。 harbor-ui提供图形化界面允许用户管理Registry上的镜像并进行授权管理。 harbor-db为Harbor的核心服务提供数据库服务存储用户权限、审计日志、Docker镜像分组等数据。 harbor-adminserver作为后端的配置数据管理中心负责管理Harbor的配置数据但没有太多其他功能。 registryHarbor的核心组件负责存储和管理Docker镜像。 harbor-log用于收集其他组件的日志并将其集中存储在一个地方。
需要注意的是harbor-adminserver充当了数据配置管理中心harbor-ui通过它来操作和管理所有的数据。这种架构使得数据的管理更加集中和统一。
通过使用Docker Compose进行部署可以方便地管理和启动这些容器确保Harbor的各个组件正常运行。 Harbor部署示例
环境准备 Harbor服务器是一个用于管理和存储Docker镜像的私有仓库。它安装了docker-ceDocker的社区版、docker-compose用于管理多个Docker容器的工具和harbor-offline-v1.2.2Harbor的离线版本1.2.2。 客户端服务器是一个使用Docker的服务器它安装了docker-ce。它可以通过网络连接到Harbor服务器并使用Harbor提供的功能来管理和获取Docker镜像。 这个架构允许在Harbor服务器上集中管理和存储Docker镜像并通过客户端服务器来访问和使用这些镜像。
部署Docker-Compose服务
下载或上传Docker-Compose 使用curl命令下载Docker-Compose二进制文件。该命令会从GitHub上的docker/compose仓库下载特定版本的Docker-Compose。请注意uname -s和uname -m是用于获取操作系统和机器架构的命令。
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose赋予执行权限 使用chmod命令为下载的Docker-Compose二进制文件赋予执行权限。
chmod x /usr/local/bin/docker-compose验证安装 使用docker-compose命令验证Docker-Compose的安装是否成功。
docker-compose --version以上步骤将下载或上传Docker-Compose二进制文件并将其安装到/usr/local/bin/docker-compose路径下。然后通过运行docker-compose --version命令可以验证安装是否成功。
部署 Harbor 服务
下载或上传Harbor安装程序 使用wget命令下载Harbor离线安装程序。该命令会从指定的URL下载Harbor离线安装程序的压缩包。
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz解压安装程序 使用tar命令解压下载的Harbor离线安装程序压缩包并将其解压到/usr/local/目录下。
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/修改Harbor安装的配置文件
使用vim或其他文本编辑器打开Harbor的配置文件harbor.cfg。根据需要修改以下两个配置项
vim /usr/local/harbor/harbor.cfg第5行将hostname设置为Harbor服务器的IP地址或域名。
hostname 192.168.41.31第59行将harboradminpassword设置为管理员的初始密码。默认的用户名/密码是admin/Harbor12345。
harbor_admin_password Harbor12345保存并关闭文件。 以上步骤将下载或上传Harbor安装程序并将其解压到/usr/local/目录下。然后可以通过修改配置文件来设置Harbor服务器的IP地址或域名以及管理员的初始密码。
启动Harbor 在配置好了harbor.cfg文件之后可以按照以下步骤启动Harbor
切换到Harbor安装目录 使用cd命令切换到Harbor的安装目录。
cd /usr/local/harbor/执行prepare命令 运行./prepare命令为Harbor启动的容器生成必要的文件和环境。
./prepare执行install.sh命令 运行./install.sh命令它将拉取Harbor镜像并启动容器。
./install.sh以上步骤将在配置好harbor.cfg文件后为Harbor生成必要的文件和环境并拉取Harbor镜像并启动容器。这样就可以开始使用Harbor服务了。
查看 Harbor 启动镜像 要查看Harbor启动的镜像可以按照以下步骤进行
切换到Harbor安装目录 使用cd命令切换到Harbor的安装目录。
cd /usr/local/harbor/执行docker-compose ps命令 运行docker-compose ps命令它将显示Harbor启动的容器及其相关信息包括容器的名称、状态和所使用的镜像。
docker-compose ps以上步骤将在Harbor安装目录下执行docker-compose ps命令以查看Harbor启动的容器及其相关信息包括所使用的镜像。
创建一个新项目
创建一个新项目并上传镜像到Harbor 在浏览器中访问Harbor的WEB UI界面 使用http://192.168.41.31访问Harbor的WEB UI界面。默认的管理员用户名和密码是admin/Harbor12345。 登录并创建新项目 在登录界面输入管理员用户名和密码后点击登录按钮。然后点击项目按钮创建一个新项目。 填写项目信息 在创建新项目的界面中填写项目名称为myproject-kgc然后点击确定按钮创建新项目。 使用Docker命令登录并推送镜像 使用以下Docker命令在本地登录Harbor并推送镜像。默认情况下Registry服务器在端口80上监听。 登录Harbor
docker login [-u admin -p Harbor12345] http://127.0.0.1下载镜像进行测试
docker pull nginx打标签
docker tag nginx:latest 127.0.0.1/myproject-kgc/nginx:v1上传镜像到Harbor
docker push 127.0.0.1/myproject-kgc/nginx:v1在Harbor界面查看镜像 在Harbor的WEB UI界面中导航到myproject-kgc目录下将看到上传的镜像及其相关信息。
按照以上步骤将能够在Harbor中创建一个新项目并通过Docker命令登录和推送镜像到该项目中。然后您可以在Harbor的WEB界面中查看该项目下的镜像及其相关信息。
在其他客户端上传镜像 以上操作都是在 Harbor 服务器本地操作。如果其他客户端登录到 Harbor就会报如下错误。出现这问题的原因为Docker Registry 交互默认使用的是 HTTPS但是搭建私有镜像默认使用的是 HTTP 服务所以与私有镜像交互时出现以下错误。
docker login -u admin -p Harbor12345 http://192.168.41.31
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.41.31/v2/: dial tcp 192.168.41.31:443: connect: connection refused要在其他客户端上传镜像到Harbor解决办法是在 Docker server 启动的时候增加启动参数默认使用 HTTP 访问。
在Docker客户端配置操作 使用vim或其他文本编辑器打开Docker服务的配置文件docker.service。
vim /usr/lib/systemd/system/docker.service在第13行修改ExecStart参数添加--insecure-registry选项并指定Harbor服务器的IP地址。
ExecStart/usr/bin/dockerd -H fd:// --insecure-registry 192.168.41.31 --containerd/run/containerd/containerd.sock或
ExecStart/usr/bin/dockerd --insecure-registry 192.168.41.31保存并关闭文件。
重启Docker服务 使用systemctl命令重新加载配置文件并重启Docker服务。
systemctl daemon-reload
systemctl restart docker再次登录Harbor 使用docker login命令登录Harbor。可以使用用户名和密码进行登录但请注意使用--password-stdin选项更安全。
docker login -u admin -p Harbor12345 http://192.168.41.31登录成功后凭据将被保存在/root/.docker/config.json文件中以便下次登录时可以直接使用凭据登录Harbor。
下载和上传镜像 使用docker pull命令下载镜像并使用docker tag和docker push命令将镜像打标签并上传到Harbor。
docker pull 192.168.41.31/myproject-kgc/nginx:v1
docker pull cirros
docker tag cirros:latest 192.168.41.31/myproject-kgc/cirros:v2
docker push 192.168.41.31/myproject-kgc/cirros:v2刷新Harbor的Web管理界面 在Harbor的WEB UI界面中导航到myproject-kgc项目下将看到上传的镜像及其相关信息。 按照以上步骤将能够在其他客户端配置Docker以上传镜像到Harbor。首先在Docker客户端的配置文件中添加--insecure-registry选项并重启Docker服务。然后使用docker login命令登录Harbor并使用docker pull、docker tag和docker push命令下载、打标签和上传镜像。最后在Harbor的WEB界面中刷新将看到上传的镜像及其相关信息。 维护管理Harbor
通过Harbor Web创建项目
要通过Harbor Web创建项目可以按照以下步骤进行操作 打开Harbor Web界面并登录。 导航到仓库页面通常位于导航栏的顶部或侧边栏中。 在仓库页面上将看到一个项目列表。单击列表上方的项目按钮。 在弹出的对话框中填写项目的名称。 如果你希望项目是私有的只有特定用户或团队可以访问请确保项目级别设置为私有并取消勾选相关选项。 如果你希望项目是公共的任何人都可以访问请将项目级别设置为公共仓库并保持相关选项处于选中状态。 单击创建按钮以创建项目。 现在就可以将镜像推送到该项目中。在推送之前请确保已经在本地配置了正确的Docker客户端并且已经登录到Harbor仓库如果项目是私有的。 推送镜像后其他用户将能够通过Harbor Web界面或命令行下载该项目下的镜像。
请注意Harbor的镜像操作与Docker Hub类似但具体细节可能会有所不同。根据具体情况和需求可能需要进一步了解Harbor的文档或参考指南。
创建 Harbor 用户
创建Harbor用户并分配权限 在Harbor的Web管理界面中单击系统管理然后选择用户管理。 在用户管理页面上单击用户按钮。 填写用户名为test-zhangsan邮箱为test-zhangsanqq.com全名为zhangsan密码为Abc123456并在注释中添加管理员可选。 单击创建按钮以创建用户。如果需要将该用户设置为管理员角色或进行其他操作可以单击左侧的…按钮进行相应设置。
添加项目成员 导航到项目页面找到你的项目例如myproject-test并单击进入。 在项目页面上找到成员选项卡并单击。 单击成员按钮。 填写之前创建的用户test-zhangsan并将角色设置为开发人员。 单击创建按钮以添加项目成员。如果需要更改成员角色或进行其他操作可以单击左侧的…按钮进行相应设置。
在客户端上使用普通账户操作镜像
首先删除本地已经打标签的镜像
docker rmi 192.168.41.31/myproject-test/cirros:v2退出当前用户并使用之前创建的账户test-zhangsan进行登录
docker logout 192.168.41.31
docker login 192.168.41.31或者
docker login -u test-zhangsan -p Abc123456 http://192.168.41.31下载和上传镜像进行测试示例中的命令是下载名为192.168.41.31/myproject-test/cirros:v2的镜像然后将其重新打标签为192.168.41.31/myproject-test/cirros:v3并上传
docker pull 192.168.41.31/myproject-test/cirros:v2
docker tag cirros:latest 192.168.41.31/myproject-test/cirros:v3
docker push 192.168.41.31/myproject-test/cirros:v3查看日志 登录到Harbor的Web管理界面。 导航到系统管理或管理选项卡通常位于导航栏的顶部或侧边栏中。 在系统管理页面上会找到一个名为日志、日志管理或类似的选项。单击该选项以进入日志管理页面。 在日志管理页面上可以选择查看不同类型的日志例如系统日志、访问日志、操作日志等。选择操作日志选项以查看用户相关操作的日志。 根据你的需求可以按时间顺序浏览日志也可以使用搜索功能来筛选特定的操作日志。 如果需要导出日志通常会有一个导出或下载按钮可以使用该按钮将日志保存到本地。 请注意具体的界面和选项可能因Harbor的版本和配置而有所不同。根据具体情况可能需要进一步查阅Harbor的文档或参考指南
修改 Harbor.cfg 配置文件 要修改Harbor的配置文件harbor.cfg中的可选参数
停止现有的Harbor实例 在Harbor安装目录中运行以下命令停止并删除现有的Harbor容器和相关卷。
cd /usr/local/harbor
docker-compose down -v编辑harbor.cfg文件 使用vim或其他文本编辑器打开harbor.cfg文件对其中的可选参数进行修改。
vim harbor.cfg注意只能修改harbor.cfg文件中的可选参数不要修改其他部分。
运行prepare脚本 运行./prepare命令它将根据新的配置文件填充配置。
./prepare重新创建并启动Harbor实例 运行docker-compose up -d命令它将重新创建并启动Harbor容器。
docker-compose up -d如果遇到防火墙相关的报错请确保firewalld服务已启动并执行以下命令重启防火墙服务
systemctl restart firewalld.service
docker-compose up -d以上步骤将停止现有的Harbor实例更新配置文件填充配置然后重新创建并启动Harbor的实例。请确保在修改配置文件之前备份原始的harbor.cfg文件以防止意外情况发生。
移除 Harbor 服务容器同时保留镜像数据/数据库并进行迁移
在Harbor服务器上操作
切换到Harbor安装目录 使用cd命令切换到Harbor的安装目录。
cd /usr/local/harbor移除Harbor服务容器 运行docker-compose down -v命令它将停止并删除Harbor服务容器并删除相关的卷。
docker-compose down -v打包镜像数据 如果你希望保留镜像数据可以将镜像数据目录打包为一个压缩文件。
ls /data/registry/docker/registry/v2/repositories/myproject-test
cd /data/registry/docker/registry/v2/repositories/myproject-test
tar zcvf test-registry.tar.gz ./*这将在当前目录下创建一个名为test-registry.tar.gz的压缩文件其中包含myproject-test项目的镜像数据。
迁移Harbor服务
如果需要重新部署Harbor并移除所有Harbor服务容器的数据可以按照以下步骤进行操作
切换到Harbor安装目录 使用cd命令切换到Harbor的安装目录。
cd /usr/local/harbor移除Harbor服务容器和数据 运行docker-compose down -v命令它将停止并删除Harbor服务容器并删除相关的卷和数据。
docker-compose down -v删除数据库和镜像数据 运行rm -r命令删除Harbor的数据库和镜像数据目录。
rm -r /data/database
rm -r /data/registry以上步骤将移除Harbor服务容器的全部数据包括数据库和镜像数据。请确保在执行这些操作之前备份了重要的数据并且在重新部署之前已经做好了必要的准备工作。