前言

在使用公共的镜像的时候,有些更新没法手动控制,而且如果是自己内部的镜像也不可能直接 push 到公共镜像里面,因此,需要有自己的私有仓库。

docker-registry

docker 官方提供一个 docker-register 工具,用于构建私有仓库。

这个工具有两种方式运行,一种是 docker 官方提供的镜像,直接运行;另一种是直接在操作系统上部署运行。

容器运行

在安装启动 docker 服务以后,直接运行命令

docker  run  -d -p 5000:5000   -v  /data/registry:/var/lib/registry   registery

记得把镜像存储的目录映射出来,不然容器没了,数据就没了。

本地安装

新版本的 docker-registry 是用 Go 语言写的,因此,到 github 上就可以找到对应的二进制了:s

https://github.com/docker/distribution-library-image/tree/master/amd64

找到 register 和 config-example.yml 文件

register

Usage:
  registry [flags]
  registry [command]

Available Commands:
  serve           `serve` stores and distributes Docker images
  garbage-collect `garbage-collect` deletes layers not referenced by any manifests
  help            Help about any command

Flags:
  -h, --help=false: help for registry
  -v, --version=false: show the version and exit

修改配置文件:

cp  config-example.yaml /etc/docker/config.yaml
vim  /etc/docker/config.yaml
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /data/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

运行服务

./registry  serve    /etc/docker/config.yaml

使用

创建好私有仓库以后,可以通过修改标签,来将现有的镜像提交到私有仓库

修改名称和标签:

docker tag  centos:latest   192.168.1.100:5000/centos:latest

push 到私有仓库:

docker push 192.168.1.100:5000/centos:latest

pull 到本地:

docker pull   192.168.1.100:5000/centos:latest