【云原生 | 07】官方镜像仓库Docker Hub和企业级私有镜像仓库Harbor

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker Hub是由Docker公司维护的一个注册中心。它拥有成千上万个镜像可供下载和运行。任何Docker用户都可以在上面创建免费账号及公共Docker镜像。除了用户提供的镜像,上面还维护着一些作为参考的官方镜像。...............

🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅

✒️个人主页:小鹏linux

💊个人社区:小鹏linux(个人社区)欢迎您的加入!

目录

1. Docker Hub

1.1 Docker Hub注册和登录

1.2 从官方仓库进行镜像拉取

1.3 自动创建

2. 阿里云镜像市场

2.1 查看镜像

2.2 下载镜像

3. 搭建本地私有仓库

3.1 使用registry镜像创建私有仓库

3.2 Harbor-企业级docker私有仓库

👑👑👑结束语👑👑👑


1. Docker Hub

Docker Hub(如下图)是由Docker公司维护的一个注册中心。它拥有成千上万个镜像可供下载和运行。任何Docker用户都可以在上面创建免费账号及公共Docker镜像。除了用户提供的镜像,上面还维护着一些作为参考的官方镜像。

镜像受用户认证的保护,同时具有一个与GitHub类似的支持率打星系统。 这些官方镜像的表现形式可能是Linux发行版,如Ubuntu或Cent OS,或是预装软件包,如Node.js,或是完整的软件栈,如WordPress。

仓库(Repository)是集中存放镜像的地方,分公共仓库和私有仓库。一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,可将仓库看做一个具体的项目或目录。例如对于仓库地址private-

docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。

1.1 Docker Hub注册和登录

构建镜像中很重要的一环就是如何共享和发布镜像。可以将镜像推送到Docker Hub或者用户自己的私有Registry中。为了完成这项工作,需要在Docker Hub上创建一个账号,可以从 https://hub.docker.com/account/signup/加入Docker Hub

首先需要注册一个账号,并在注册之后通过收到的确认邮件进行激活。


下面就可以测试刚才注册的账号是否能正常工作了。要登录到Docker Hub,可以使用docker login命令

[root@localhost ~]# docker login 
Username: jamtur01 
Password: 
Email: james@lovedthanlost.net Login Succeeded

image.gif

这条命令将会完成登录到Docker Hub的工作,并将认证信息保存起来以供后面使用。可以使用docker logout命令从一个Registry服务器退出。

登录成功的用户可以上传个人制造的镜像。

1.2 从官方仓库进行镜像拉取

用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。


根据是否为官方提供,可将这些镜像资源分为两类。一种是类似centos这样的基础镜像,称为基础或根镜像。这些镜像是由Docker公司创建、验 证、支持、提供。这样的镜像往往使用单个单词作为名字。


还有一种类型,比如ansible/centos7-ansible镜像,它是由Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库。可以通过用户名称前缀user_name/镜像名来指定使用某个用户提供的镜像。

另外,在查找的时候通过-s N参数可以指定仅显示评价为N星以上的镜像。


下载官方centos镜像到本地,如下所示:

[root@localhost ~]# docker pull centos
Pullingrepositorycentos
0b443ba03958:Downloadcomplete 539c0211cd76:Downloadcomplete 511136ea3c5a:Downloadcomplete 7064731afe90:Downloadcomplete

image.gif

用户也可以在登录后通过docker push命令来将本地镜像推送到Docker Hub

1.3 自动创建

Ansible是知名自动化部署配置管理工具。

自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便。有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像。


而自动创建允许用户通过Docker Hub指定跟踪一个目标网站(目前支持 GitHub或BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。

要配置自动创建,包括如下的步骤:

    1)创建并登录Docker Hub,以及目标网站;*在目标网站中连接帐户到Docker Hub;


    2)在Docker Hub中配置一个“自动创建”;

    3)选取一个目标网站中的项目(需要含Dockerfile)和分支;

    4)指定Dockerfile的位置,并提交创建。之后,可以在Docker Hub的“自动创建”页面中跟踪每次创建的状态。

2. 阿里云镜像市场

国内不少云服务商都提供了Docker镜像市场,下面阿里云镜像站为例,介绍如何使用这些市场。

image.gif

2.1 查看镜像

访问https://developer.aliyun.com/mirror/,即可看到已存在的仓库和存储的镜像,包括Ubuntu、Java、Mongo、MySQL、Nginx等热门仓库和镜像。阿里云官方仓库中的镜像会保持跟DockerHub中官方镜像的同步。

CentOS仓库为例,其中包括了centos6、centos7和centos8等镜像

2.2 下载镜像

以在linux中下载CentOS基础镜像为例:

1. 备份yum源:

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

image.gif

2. 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/

centos8(centos6官方源已下线,建议切换centos-vault源)

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

image.gif

或者:
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

image.gif

centos7:
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

image.gif

或者:
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

image.gif

centos6(centos6官方源已下线,建议切换centos-vault源)
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo

image.gif

或者:
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo

image.gif

3. 搭建本地私有仓库

3.1 使用registry镜像创建私有仓库

安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:

[root@localhost ~]# docker run -d -p 5000:5000 registry

image.gif

这将自动下载并启动一个registry容器,创建本地的私有仓库服务。 默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。

[root@localhost ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registryregistry

image.gif

3.2 Harbor-企业级docker私有仓库

准备环境:

[root@localhost ~]# python      #查看python环境,必须是2.7或更高版本

image.gif

docker引擎应为1.10或更高版本

docker compose 为1.6.0或更高版本

实验步骤:

[root@localhost ~]# rz      #上传harbor-offline-installer-v1.2.0.tgz压缩包
[root@localhost ~]# tar xf harbor-offline-installer-v1.2.0.tgz      #解压缩
[root@localhost ~]# mv harbor /usr/local/
[root@localhost ~]# cd /usr/local/harbor/
[root@localhost harbor]# ls     #查看
[root@localhost harbor]# vim harbor.cfg     #打开配置文件,进行如下修改

image.gif

1.将hostname = reg.mydomain.com仓库地址修改为hostname = hub.anxiaopeng.com

2.将ui_url_protocol = http协议修改为ui_url_protocol = https   加密协议

3.将db_password = root123数据库密码修改为db_password = axp123456

4.max_job_workers = 3为同时只能从仓库下载3个镜像,根据需求修改

查看到配置文件中的ssl_cert = /data/cert/server.crt和ssl_cert_key = /data/cert/server.key证书密钥私钥文件路径为/data/cert,所以

[root@localhost harbor]# mkdir -p /data/cert      #创建证书存放路径
[root@localhost cert]# chmod -R 777 /data/cert
[root@localhost cert]# openssl genrsa -des3 -out server.key 2048  #创建私钥,设置两次密码为123456
[root@localhost cert]# openssl req -new -key server.key -out server.csr   #然后输入私钥密码和其他信息
[root@localhost cert]# cp server.key server.key.org     #备份私钥
[root@localhost cert]# openssl rsa -in server.key.org -out server.key     #退密码处理,将server.key的密码取消掉
[root@localhost cert]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
[root@localhost cert]# cd -

image.gif

在windows的hosts文件中添加192.168.232.165 hub.anxiaopeng.com

[root@localhost harbor]# ./install.sh

image.gif

浏览器访问192.168.232.165,输入账号admin密码Harbor12345登录

一个项目下可以存放很多个镜像,而且镜像可以是不同的。

[root@localhost harbor]# docker images      #查看本地镜像
[root@localhost harbor]# docker tag centos:centos7.9.2009 hub.anxiaopeng.com/library/centos:centos7.9.2009  #在项目中标记镜像
[root@localhost harbor]# vim /etc/hosts     #添加:
192.168.232.165 hub.anxiaopeng.com
[root@localhost harbor]# vim /etc/docker/daemon.json      #打开配置文件,修改内容,添加信任域名,注意不要加协议,注意逗号。

image.gif

原内容:

{"registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"]}

image.gif

修改后:
{
    "registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"],
    "insecure-registries":["hub.anxiaopeng.com"]
}

image.gif

[root@localhost harbor]# docker login hub.anxiaopeng.com  #输入账号admin和密码Harbor12345进行认证(docker logout hub.anxiaopeng.com可以移除认证)
[root@localhost harbor]# docker push hub.anxiaopeng.com/library/centos:centos7.9.2009 #推送镜像到项目

image.gif

刷新浏览器就可以看到镜像上传成功了。标签书代表子版本的个数。此方法上传的镜像是公开的,任何人不需要登录就可以直接访问到下载的url

如果公司内部需要,则给不同的不能创建不同的普通用户,每个部门通过各自的普通用户进行上传和下载镜像。

👑👑👑结束语👑👑👑

image.gif

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。   相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3天前
|
消息中间件 Kafka 流计算
docker环境安装kafka/Flink/clickhouse镜像
通过上述步骤和示例,您可以系统地了解如何使用Docker Compose安装和配置Kafka、Flink和ClickHouse,并进行基本的验证操作。希望这些内容对您的学习和工作有所帮助。
50 28
|
16天前
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
94 26
|
1月前
|
安全 数据安全/隐私保护 Docker
docker私有仓库harbor安装
通过以上步骤,您可以成功在企业内部安装和配置Harbor私有仓库,方便地管理和分发Docker镜像。Harbor不仅提供了基础的镜像管理功能,还增强了安全性、身份管理和审计功能,使其成为企业级容器镜像管理的理想选择。
102 22
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
88 27
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
74 22
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
160 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
1月前
|
Ubuntu NoSQL 开发工具
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
213 70
|
JSON Shell Linux
docker学习(四)--仓库
docker中仓库使用
702 0