快速搭建并迁移离线docker registry镜像仓库

Docker Registry是Dockers镜像的存储和管理中心,在一个离线或没有外网网络的环境下使用大量docker镜像,需要提供一个镜像仓库时需要怎么操作比较合适呢?

Registry可以通过push的方式上传镜像到仓库中,默认将上传的镜像数据保存在/var/lib/registry目录。那么在离线时我们可以将regsitry本身的镜像save成tar包,将/var/lib/registry数据目录也打包成tar包,然后在目标机器上通过volume的形式挂载运行即可提供服务。

具体的实现步骤如下:

前置说明:

拟定有两台已经安装了Docker的机器A和B,A机器所在网络能够访问公网,B机器所在网络不能访问公网。
这样为了模拟了部分企业网络隔离的场景。

A机器准备数据

下载docker registry镜像

在有A机器上下载registry的docker镜像

docker pull docker.io/registry

可以直接在docker hub的官网下载最新版本,也可以使用国内的提供的免费的镜像仓库。例如

docker pull hub.c.163.com/library/registry:latest

创建docker镜像存储目录

在A机器上创建一个保存docker镜像overlay的本地目录

mkdir -p /data/registry-data 

添加http访问权限

修改文件/etc/docker/daemon.json,之后就可以使用http的方式registry,默认是使用https的方式访问。

{ 
    "insecure-registries":["127.0.0.1:5000"],
    "log-driver": "json-file",
    "log-opt": {
        "max-size": "100m",
        "max-file": "5"
    }
 }

这里主要添加insecure-registries配置即可,另外的两条是对docker log的限制。
有多条时配置时,可以使用逗号,分隔多个。

重启docker服务

修改完/etc/docker/daemon.json后,需要重启docker服务才能使配置生效。

systemctl restart docker

其他的系统分别使用不同的方法重启。
例如:
centos6/redhat6

service docker restart

或者部分环境可以使用如下方法重启服务

/etc/init.d/docker restart

运行registry服务

在A机器上运行registry服务并将/data/registry-data目录挂载到容器内/var/lib/registry目录中

docker run 
-d --name=registry  \
-v /registry-data:/var/lib/registry  \
-p 5000:5000 docker.io/registry

修改本地镜像tag

docker镜像上传时需要指定仓库名称和镜像名称

docker tag docker.io/centos  127.0.0.1:5000/centos

这里的例子将镜像的仓库名称写成127.0.0.1:5000,也可以根据环境信息配置,建议使用域名的方式管理镜像。

上传镜像到本地的registry仓库中

在A机器上将需要的镜像都push到该registry中,

docker push 127.0.0.1:5000/centos

这里只提供了一个centos的镜像下载和上传的方法,类推可以将需要的镜像都上传到本地registry中。

打包registry镜像

在A机器上打包registry镜像

docker save -o registry.tar docker.io/registry

由于B 机器上可能没有registry仓库本身的镜像,这里可以将registry的镜像save成tar包。

打包/data/registry-data目录

在A机器上打包/data/registry-data目录

tar czvf registry-images-data.tar.gz /data/registry-data

移动数据

将registry.tar 和 registry-images-data.tar.gz 两个文件复制到B机器上。
复制的方法可以有多种 ,比如scp/ftp/U盘/等方式;
建议在复制前先使用md5sum/sha256计算一个校验值,在目标机器再次校验一次,确保文件在传输过程中没有异常。

B 机器建立离线registry

修改B机器上docker配置文件添加http访问权限

修改文件/etc/docker/daemon.json,之后就可以使用http的方式registry,默认是使用https的方式访问。

{ 
    "insecure-registries":["127.0.0.1:5000"],
    "log-driver": "json-file",
    "log-opt": {
        "max-size": "100m",
        "max-file": "5"
    }
 }

这里主要添加insecure-registries配置即可,另外的两条是对docker log的限制。
有多条时配置时,可以使用逗号,分隔多个。

重启docker服务

修改完/etc/docker/daemon.json后,需要重启docker服务才能使配置生效。

systemctl restart docker

其他的系统分别使用不同的方法重启。
例如:
centos6/redhat6

service docker restart

或者部分环境可以使用如下方法重启服务

/etc/init.d/docker restart

导入registry镜像

在B机器上导入registry的镜像

docker load -i registry.tar

镜像registry的镜像导入到本地的docker中

解压镜像数据

在B机器上解压镜像数据

tar xf registry-images-data.tar.gz -C /data/registry-data

这里的路径建议配置一致,如果路径不一致可能导致启动的registry无法找到正确的数据目录。

运行registry容器

在B机器上运行registry

docker run \
-d --name=registry \
-v /data/registry-data:/var/lib/registry \
-p 5000:5000 docker.io/registry

验证使用

在B机器所在 网络中,根据要求修改tag,通过docker pull的方式从该registry中下载镜像使用。例如:

docker pull 127.0.0.1:5000/centos
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容