Ubuntu18搭建Docker Registry服务(转)

1.下载镜像
首先我们将该仓库pull下来:

$ docker pull registry

2.配置配置文件
默认情况下的registry不支持删除镜像,我们需要自己写配置文件,在容器启动时候映射进去,在/data目录下编写config.yml文件:

注意:该文件必须使用空格分隔,不能使用tab符。

version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3

配置完成后就可以启动容器,注意映射config.yml文件的位置:

$ docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry -v /data/config.yml:/etc/docker/registry/config.yml registry

执行命令curl -X GET localhost:5000/v2/_catalog就能查看registry中的所有镜像:

$ curl -X GET localhost:5000/v2/_catalog

3.配置宿主机
我安装了Docker Registry服务的主机IP为192.168.100.183,我现在要在宿主机中push镜像。

(1) 默认情况下只支持HTTPS协议下的Registry连接,因此首先我们要让宿主机信任Registry服务器。

编辑宿主机中的/etc/docker/daemon.json文件,如果没有就新建:

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"],
  "insecure-registries":["192.168.100.183:5000"]
}
注意在第三行中指定了Registry服务器的地址,和Registry暴露的端口号。

(2)修改/lib/systemd/system/docker.service,载入配置文件

在配置文件中添加一行:EnvironmentFile=-/etc/docker/daemon.json

(3)重启Docker服务

4.上传镜像
我们以上传hello-world镜像为例:

[[email protected] ~]$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
nginx                       latest              5699ececb21c        7 days ago          109MB
portainer/portainer    latest              7afb7abcfe5f        8 days ago          57MB
rancher/server         stable              85b3b338d0be        4 weeks ago         1.08GB
hello-world              latest              e38bc07ac18e        2 months ago        1.85kB
rancher/agent          v1.2.10             6023e1a77132        3 months ago        237MB

(1)首先我们修改要上传的镜像,名称格式为:Registry服务器地址/镜像名:tag的形式。

即将 library/hello-world:latest修改为192.168.100.183/hello-world:latest:

$ docker tag library/hello-world:latest 192.168.100.183:5000/hello-world:latest
$ docker images

REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
nginx                                   latest              5699ececb21c        7 days ago          109MB
portainer/portainer                latest              7afb7abcfe5f        8 days ago          57MB
rancher/server                      stable              85b3b338d0be        4 weeks ago         1.08GB
192.168.100.183:5000/hello-world   latest              e38bc07ac18e        2 months ago        1.85kB
hello-world                          latest              e38bc07ac18e        2 months ago        1.85kB
rancher/agent                      v1.2.10             6023e1a77132        3 months ago        237MB

(2)然后push该镜像:

$ docker push 192.168.100.183:5000/hello-world

The push refers to a repository [192.168.100.183:5000/hello-world]
2b8cbd0846c5: Pushed 
latest: digest: sha256:d5c74e6f8efc7bdf42a5e22bd764400692cf82360d86b8c587a7584b03f51520 size: 524

(3)回到Registry服务器,重新执行查看镜像的命令:

$ curl -X GET localhost:5000/v2/_catalog

{"repositories":["hello-world"]}

可以看到刚刚宿主机上传的镜像已经拿到了。

5.查看命令

刚刚我们使用了一个API,查看Registry服务器上的所有镜像,即/v2/_catalog。还有一些其他查看命令,如下:

列出某个镜像所有tag: 
/v2/镜像名/tags/list,如:/v2/hello-world/tags/list

列出某个tag的详细信息 
/v2/镜像名/manifests/tag号,如:/v2/hello-world/manifests/latest

获取某个tag的digest 
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X HEAD 192.168.100.183:5000/v2/hello-world/manifests/latest

6.删除镜像
删除镜像需要指定镜像名和digest(上传时得到的),使用命令如下:

DELETE /v2/镜像名/manifests/镜像digest

$ curl -I -X DELETE localhost:5000/v2/hello-world/manifests/sha256:d5c74e6f8efc7bdf42a5e22bd764400692cf82360d86b8c587a7584b03f51520

HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Wed, 04 Jul 2018 06:49:17 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8

HTTP 202代表成功了,重新查看镜像和TAG,已经显示删除了:

$ curl -X GET localhost:5000/v2/_catalog

{"repositories":["hello-world"]}

$ curl -X GET localhost:5000/v2/hello-world/tags/list

{"name":"hello-world","tags":null}
但是实际上只是逻辑删除,文件依然存在,如果要彻底删除,需要进行垃圾回收。

7.进入到Registry服务内部:

docker exec -it 9d4d2055fb3a sh
执行命令:

registry garbage-collect /etc/docker/registry/config.yml

原文:https://blog.csdn.net/yuanlaijike/article/details/80912801

原文地址:https://www.cnblogs.com/helios-fz/p/10932303.html

时间: 2024-07-31 08:56:46

Ubuntu18搭建Docker Registry服务(转)的相关文章

在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务

本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. 声明:本文仅作为个人学习使用! 第一步,在服务器上启动一个KVM虚拟机(ip: 172.16.13.221),编译Docker生成可执行文件,启动Docker Daemon服务.可参考我的另一篇文档. 第二步,制作Registry镜像 由于Ubuntu环境中暂时还没有docker registry镜

简单搭建docker registry

已知信息: 服务端IP:192.168.7.2xx 客户端IP:192.168.7.1xx 服务端: docker registry中镜像本地映射地址:/Users/dockergit/private_registry(可自定义) docker registry容器中镜像存储地址:/var/lib/registry 客户端: 已创建image:test_agent:latest 环境为Linux OS,服务端和客户端都安装好docker,能使用docker命令. 简单搭建docker regis

Docker Registry服务启动过程浅析

当我们pull一个registry镜像或者自己制作一个镜像之后,使用命令docker run -d -p 5000:5000 registry,就可以启动一个私有容器服务,那么究竟是怎么做到的呢? 首先docker ps显示cmd是 "docker-registry",但是启动的时候并没有输入. [email protected]:/home/opuser# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

在 ubuntu 搭建 docker registry 私有仓库

为什么要搭建 docker 私有仓库 原因有几个: 项目需要,不希望将项目放到 docker hub 上. 环境需求,考虑网络.效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度. 可以做更多的个性化配置. 用什么搭建 docker 私有仓库 docker 官方提供了 registry 的镜像,可以使用它来建私有仓库. 本次搭建的环境 在这里先说明一下本文的实验环境: docker 仓库服务器: ubuntu 14.04 ip地址:192.168.188.112 docker 客

搭建私有Docker Registry

Docker的Docker Hub是一个公有的Registry, 从Docker Hub上可以找到很多的官方或个人构建的Docker Image, 通常, 这些image能满足开发.测试的需求.  但是如果想构建的image只在控制范围内共享, 而不是开放环境, 那就得搭建自己的私有Docker Registry. Docker官方实现了docker-registy, 根据官方的说明可以搭建自己的Docker Registry, 官方有两种方式搭建Docker Registry, 一种是按传统的

可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI

上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker 镜像仓库管理工具呢?这里有一个简单好用的企业级 Registry 服务器 - Harbor,推荐在生产环境上使用. Harbor 简介 Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry服务. 它以Docker公司

Docker registry垃圾回收

Docker registry垃圾回收 通过: docker run -p 5000:5000 -v /netdata/xxxx/registry:/var/lib/registry registry.cn-hangzhou.aliyuncs.com/term/registry-gc:2.7 registry garbage-collect /var/lib/registry/config.yml 搭建好registry服务后,docker push alpine:3.8镜像至registry服

SUSE Portus + Docker Registry在Rancher环境下的部署实战

在正文之前,我们先来看一下,如果没有容器,通常会如何部署 Docker Registry?关于这个问题,我简单画了一个草图: 下面简单解释一下: Nginx:用来做 Docker Registry 的代理和软件负载均衡Keepalived 采用主备加虚拟 IP 的方式,解决 Nginx 的单点问题,保证 Nginx 服务的高可用性. Docker Registry:这是 Docker 官方开源的私有镜像仓库项目,对应 github 上的 docker-distribution 项目,也是私有镜像

docker registry v2 nginx

Docker registry V2 nginx 搭建 一 环境 俩台centos 7 64位 Docker 版本 Client: Version:      1.8.2 API version:  1.20 Package Version: docker-1.8.2-7.el7.centos.x86_64 Go version:   go1.4.2 Git commit:   bb472f0/1.8.2 Built: OS/Arch:      linux/amd64 Server: Vers