docker镜像仓库
docker镜像仓库
一、公有仓库
1.1 docker hub仓库(了解)
Docker Hub是Docker公司维护的公共Registry。用户可以将自己的镜像保存到Docker Hub免费的repository中。如果不希望比尔访问自己的镜像,也可以购买私有repository。
1.1.1 上传镜像到docker hub公有仓库
-
在https://hub.docker.com/注册一个Docker Hub账号。
-
在Docker host上登陆docker hub
docker login
-
Docker Hub为了区分不同用户的同名镜像,镜像名中要包含用户名,完整格式为username/xxx:tag,通过docker tag命令重命名镜像名字
docker tag [image] username/xxx:tag
-
通过docker push命令把本地镜像推送到公共仓库Docker Hub中
docker push username/xxx:tag
-
登录 https://hub.docker.com,在Public Repository中就可以看到本地上传的镜像,如果要删除镜 像,只能登陆web界面删除。
1.2 阿里云公有仓库
阿里云容器镜像服务为我们提供了镜像加速器和免费的镜像仓库。
-
登录https://cr.console.aliyun.com/cn-hangzhou/instances/repositories阿里云控制台首页。创建镜像仓库。这里将命名空间命名为ldhwlkq,仓库名称命名为edu。我们上传的镜像就是要上传到ldhwlkq/edu中。
-
在Docker host主机上登陆阿里云仓库
docker login --username=ldhwlkq crpi-tlkz49dhxv25w94d.cn-hangzhou.personal.cr.aliyuncs.com # 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
-
上传镜像到阿里云仓库
# 先重命名 docker tag [ImageId] crpi-tlkz49dhxv25w94d.cn-hangzhou.personal.cr.aliyuncs.com/ldhwlkq/edu:[镜像版本号] # 上传镜像 docker push crpi-tlkz49dhxv25w94d.cn-hangzhou.personal.cr.aliyuncs.com/ldhwlkq/edu:[镜像版本号]
-
查看edu仓库的镜像版本,可以看到之前上传的镜像,如果要删除镜像,只能在web管理界面上操作。
二、私有仓库
2.1 registry仓库(了解)
在Docker中,当我们执行docker pull的时候,它实际上是从registry.hub.docker.com这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目镜像push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库,Docker官方提供了一个搭建私有仓库的镜像registry。
-
下载registry镜像,运行容器并暴露5000端口,同时添加--restart always参数,可使容器随着Docker host的启动而启动
# 下载registry镜像 docker pull registry:2 # 运行容器 docker run -itd -p 5000:5000 --restart always --name ldhregistry registry:2
-
registry默认是不需要身份验证就能直接上传镜像,但是需要修改镜像名来指定仓库地址,镜像格式为ip:port/xxx:tag,再通过docker push将该镜像推送到私有仓库。
docker [image] 192.168.100.5:5000/xxx:tag
-
设置docker的私有仓库地址,并上传镜像
vim /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ],"insecure-registries": ["192.168.100.5:5000"] } systemctl daemon-reload systemctl restart docker # 上传镜像 docker push 192.168.100.5:5000/xxx:tag # 查看私有仓库的镜像 curl http://192.168.100.5:5000/v2/_catalog2.2 harbor仓库
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必须的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。
2.2.1 harbor的组件
1.Harbor依赖的外部组件
-
Nginx(即proxy代理层):Nginx前端代理,主要用于分发前端页面UI访问和镜像上传和下载流量。
-
Registry v2:镜像仓库,负责存储镜像文件。
-
Database(Mysql或者Postgresql):为core services提供数据库服务,负责存储用户权限、审计日志、Docker image分组信息等数据。
2.Harbor自有组件
1、Core services(Admin Server):这是Harbor的核心功能,主要提供以下服务:
-
UI:提供图形化界面,帮助用户管理registry上的镜像,并对用户进行授权。
-
webhook:为了及时获取registry上image状态变化的情况,在Registry上配置webhook,把状态传递给UI模块。
-
Auth服务:负责根据用户权限给每个docker push/pull命令签发token。Docker客户端向Registry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。
-
API:提供Harbor RESTful API。
2、Replication Job Service:
提供多个Harbor实例之间的镜像同步功能。
3、Log collector:
为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
2.2.2 创建Harbor仓库
-
下载Harbor压缩包,上传主机并解压
tar -zxvf harbor-offline-installer-v1.10.10.tgz cd harbor/ [root@ldh harbor]# ls common.sh harbor.yml LICENSE harbor.v1.10.10.tar.gz install.sh prepare
-
修改harbor.yml文件中的hostname,监听本主机IP,将https等内容注释掉,同时还能通过该文件定义harbor的登陆密码,默认密码为Harbor12345
vim harbor.yml hostname: 192.168.100.5 # http related config http: # port for http, default is 80. If https enabled, this port will redirect to https port port: 80 # https related config #https: # https port for harbor, default is 443 # port: 443 # The path of cert and key files for nginx #certificate: /your/certificate/path #private_key: /your/private/key/path
-
安装docker-compose,harbor是被其控制的
yum -y install docker-compose # 修改/etc/docker/daemon.json文件 vim /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn" ],"insecure-registries": ["192.168.100.5"] } systemctl daemon-reload systemctl restart docker -
运行install.sh脚本
./install.sh
-
安装完毕后,访问http://192.168.100.5/harbor即可显示harbor图形化管理界面,账号密码为admin/Harbor12345

-
新建仓库

-
上传镜像
# 登录harbor docker login http://192.168.100.5 -u admin -p Harbor12345 # 重命名镜像 docker tag saolei:v1 192.168.100.5/edu/saolei # 上传镜像 docker push 192.168.100.5/edu/saolei
-
管理仓库在图形化界面。
更多推荐



所有评论(0)