docker学习-构建本地Registry

保存和分发镜像的最直接的方法就是使用Docker H u b,它是Docker公司维护的公共Regsitry,用户可以将自己的镜像保存到Docker H u b 免费的repository中。如果不希望别人访问自己的镜像,也可以购买私有repository.
一般我们可以使用Docker H u b上传和下载镜像,虽然十分方便,但是还是有些限制,比如:
1、需要外网连接,而且上传和下载速度慢
2、上传到Docker H u b 的镜像任何人都能够访问,虽然可以用私人repositroy,但不是免费的
3、因为安全原因很多组织不允许将镜像放到外网

解决方法是单间本地的Registry。
Docker已经将Registry开源了,同时在Docker H u b上也有官方的镜像Registry。
我们可以在Docker中运行自己的Registry

使用dockerfile构建httpd

在使用仓库之前,首先我们构建一个httpd镜像,保存到本地中
首先创建dockerfile目录和创建dokcerfile文件

cd ~
mkdir dokcerfile
cd dockerfile
touch dockerfie

按照如下编辑dockerfile

然后构建http镜像

docker build -t httpd:v11 -f dockerfile /root/dockerfile

如下所示,构建成功

检查镜像

docker images

启动registry容器

首先在根目录下创建/myregistry目录用于存放镜像数据
本次使用镜像是registry:2

cd /
mkdir /myregistry 

使用如下命令创建registry容器

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2


说明:
1、-d 后台启动容器
2、-p 将容器的5000端口映射到Host的5000端口。5000是registry服务端口
3、-v 将容器的/var/lib/regsitry目录映射给Host的/myregistry,用于存放镜像数据

通过docker tag重命名镜像,使之与registry匹配,如下所示:

docker tag yangchao/httpd:v1 127.0.0.1:5000/yangchao/httpd:v1

将httpd:v11更改为Registry要求的格式,格式如下:

只有Docker Hub上的镜像可以省略registry-host:[port]
按照如下方式,通过docker tag重命名镜像,使之与registry匹配

docker tag httpd:v11 127.0.0.1:5000/yangchao/httpd:v11

使用dokcer image命令检查镜像

然后将yangchao/httpd:v11上传到Registry

docker push 127.0.0.1:5000/yangchao/httpd:v11


然后查看Registry中的镜像

curl 127.0.0.1:5000/v2/_catalog


可以在/myregistry目录中查看相应的镜像

至此本地registry就创建完毕

原文地址:https://blog.51cto.com/11555417/2437297

时间: 2024-10-08 20:54:44

docker学习-构建本地Registry的相关文章

docker系列-搭建本地registry容器的各种坑

总结的坑:a.关注daemon.json的书写格式.一句话可以错好几个点.b.tag要清楚的表示registry服务器的信息,才能push上传成功.不是可有可无的信息.c.tag中有版本号要清楚的写上.系统自动补全的是用latest. #################################################################### 搭建过程:前提:通过docker pull registry下载了registry 1.新建的/etc/docker/daem

docker学习-构建镜像

对于docker用户来说,最好的情况是不需要自己创建镜像,几乎所有的常用的数据库.中间件.应用软件等都有现成的docker官方镜像或其他人和组织创建的镜像,我们只需要稍微配置就可以直接使用.但是在某些情况下,也需要自己构建镜像.比如:1.找不到现成的镜像,比如自己开发应用程序2.需要在镜像中加入特定的功能.docker提供了两种构建镜像的方法:docker commit命令和Dockerfile构建文件. docker commit docker commit命令式创建镜像最直观的方法,其过程包

Docker学习---挂载本地目录

docker可以支持把一个宿主机上的目录挂载到镜像里. docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash 通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径. 现在镜像内就可以共享宿主机里的文件了. 默认挂载的路径权限为读写.如果指定为只读可以用:ro docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu

转:Docker学习---挂载本地目录

原文: http://my.oschina.net/piorcn/blog/324202 docker可以支持把一个宿主机上的目录挂载到镜像里 docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash 通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径. 现在镜像内就可以共享宿主机里的文件了. 默认挂载的路径权限为读写.如果指定为只读可以用:ro docker run -it -v /

搭建本地 Registry - 每天5分钟玩转 Docker 容器技术(20)

Docker Hub 虽然非常方便,但还是有些限制,比如: 需要 internet 连接,而且下载和上传速度慢. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的. 安全原因很多组织不允许将镜像放到外网. 解决方案就是搭建本地的 Registry. Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry.下面我们就在 Docker 中运行自己的 registry. 启动 regist

第 3 章 镜像 - 020 - 搭建本地 Registry

Docker Hub 虽然非常方便,但还是有些限制,比如: 需要 internet 连接,而且下载和上传速度慢. 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的. 安全原因很多组织不允许将镜像放到外网. 解决方案就是搭建本地的 Registry. 在 Docker Hub 上也有官方的镜像 registry.我们可以在 Docker 中运行自己的 registry. 启动 registry 容器 1 [email protected]:~

DOCKER构建本地局域网镜像

本人所使用的操作系统:CENTOS7 x64 DOCKER版本:1.12.5 实验机器: 192.168.88.101(DOKCER仓库机器) 192.168.9.71(用于开发的机器,二者虽不在统一网段,但是可以互通) 第一步,我是先从docker hub上拉了一个官方的centos镜像 [[email protected] ~]$ sudo docker pull centos 第二步,又拉了一个registry镜像用来构建本地仓库,同时本地目录同步到registry镜像中 [[email 

阿里云上构建本地仓库Docker images

第一步,先在阿里云https://cr.console.aliyun.com/cn-hangzhou/namespaces上创建命名空间,再根据命名空间创建镜像仓库 第二步,本地上传images到阿里云容器镜像市场 1.本地创建images [[email protected] ~]# docker commit test_centos xxxxx_test/test:v1sha256:7af8f7643b100bd74a7b97de9511469ed36190a7930b278bc3a33f3

10、《每天5分钟玩转Docker容器技术》学习-Docker命令之本地镜像管理

a) Docker images 命令 docker images : 列出本地镜像. docker images [OPTIONS] [REPOSITORY[:TAG]] -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层): --digests :显示镜像的摘要信息: -f :显示满足条件的镜像: --format :指定返回值的模板文件: --no-trunc :显示完整的镜像信息: -q :只显示镜像ID. l 实例 查看本地镜像列表. 列出本地镜像中REPOSITO