Docker-registry私有镜像仓库的安装

我在这里的镜像仓库搭建在ip为192.168.3.23的虚机中。

安装docker-registry

1.拉取镜像

        

# docker pull registry

        

2.查看镜像

# docker images

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

registry                                1                   f32a97de94e1        7 months ago        25.8MB

3.启动私有仓库

这里-v挂载的目录是镜像实际存放的目录,挂载是为了删除容器时里面的镜像不丢,在本地备份

# docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry:1

这时,一个私有的镜像仓库docker-registry就搭建好了。

基本操作

首先pull一个nginx作镜像测试

1.pull nginx镜像

# docker pull nginx

2.打上Tag

# docker tag nginx:latest 192.168.3.23:5000/nginx:v1

REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

192.168.3.23:5000/nginx v1                  f949e7d76d63        2 weeks ago         126MB

3.修改docker安全规则

在需要上传镜像的主机上打开docker配置文件

# vi /etc/docker/daemon.json

不同版本的docker修改方式可能不同,现在使用的是19.03版本的docker,在/etc/docker/daemon.json 配置文件中插入

{

    "insecure-registries" : ["192.168.3.23:5000"],

    "registry-mirrors": ["https://4wmjwi37.mirror.aliyuncs.com"],

    "log-driver": "json-file",

    "log-opts": {

        "max-size": "10m",

        "max-file": "3"

    }

}


4.镜像上传

# docker push 192.168.3.23:5000/nginx:v1

5.查看镜像

在镜像上传成功后,可通过命令查看镜像仓库内的镜像

# curl http://192.168.3.23:5000/v2/_catalog

{"repositories":["cmcc-mec","nginx"]}

6.查看镜像标签列表

要想知道某个镜像的标签可通过这种方式查看,比如说nginx

# curl http://192.168.3.23:5000/v2/nginx/tags/list

{"name":"nginx","tags":["v1"]}

7.拉取镜像

从docker-registry中拉取镜像,首先也得像第3步一样修改主机的docker配置文件,然后才能拉

# docker pull 192.168.3.23:5000/nginx:v1

v1: Pulling from nginx

Digest: sha256:066edc156bcada86155fd80ae03667cf3811c499df73815a2b76e43755ebbc76

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。

1.提供分层传输机制,优化网络传输

Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。

2.提供WEB界面,优化用户体验

只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。

3.支持水平扩展集群

当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。

4.良好的安全机制

企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。

5.Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

你可能感兴趣的:(Docker-registry私有镜像仓库的安装)