Docker Private warehouses [私有仓库]

10 篇文章 0 订阅
8 篇文章 0 订阅

有时候使用 DockerHub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
docker官方提供了一个docker-registry工具,可以用于构建私有的镜像仓库。

安装运行 docker-registry

[root@DockerImages ~]# yum -y install docker-registry
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.cn99.com
 * updates: mirrors.163.com
软件包 docker-registry 已经被 docker-distribution 取代,改为尝试安装 docker-distribution-2.6.2-2.git48294d9.el7.x86_64
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker-distribution.x86_64.0.2.6.2-2.git48294d9.el7 将被 安装
--> 解决依赖关系完成

...

下载并运行容器

在安装了 Docker 后,可以通过获取官方 registry 镜像来运行。

[root@DockerImages ~]# docker pull registry:latest
Unable to find image 'registry:latest' locally
Trying to pull repository docker.io/library/registry ... 
latest: Pulling from docker.io/library/registry
c87736221ed0: Pull complete 
1cc8e0bb44df: Pull complete 
54d33bcb37f5: Pull complete 
e8afc091c171: Pull complete 
b4541f6d3db6: Pull complete 
Digest: sha256:f87f2b82b4873e0651f928dcde9556008314543bd863b3f7e5e8d03b04e117f7
Status: Downloaded newer image for docker.io/registry:latest
bd54cb4ae7e5340318384ca7c786285ca6de9ba8ee46cf43d1704ef3e442676a
[root@DockerImages ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu             14.04               2c5e00d77a67        10 days ago         188 MB
docker.io/registry           latest              f32a97de94e1        2 months ago        25.8 MB
docker.io/ubuntu             12.04               5b117edd0b76        2 years ago         104 MB
[root@DockerImages ~]# docker run -d -p 5000:5000 docker.io/registry:latest
[root@DockerImages ~]# docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
bd54cb4ae7e5        registry                        "/entrypoint.sh /e..."   5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp   eager_kare

此外,还可以指定本地路径(如 /home/user/registry-conf )下的配置文件。
默认情况下,仓库会被创建在容器的/tmp/registry下。可以通过-v参数来将镜像文件存放在本地的指定路径。

#例如下面的例子将上传的镜像放到/opt/data/registry 目录:

[root@DockerImages ~]#  docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry   docker.io/registry:latest

如果在启动过程中出现如下错,

[root@DockerImages ~]# docker run -d -p 5000:5000 docker.io/registry:latest
b65bbf3963e4f87b66fce6ea87763c42ef6ac272c8eae51a431fd2f9a6a8da66
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint sad_wright (daceb29865bbf0e3702a8f2ec20f452f4d1a1518def975b139091715416cf591): Bind for 0.0.0.0:5000 failed: port is already allocated.

解决办法:这是由于来自守护进程的错误响应,而致使外部连接失败。解决的办法就是将其docker进程 kill掉,然后再 清空掉iptables下nat表下的所有链(规则) 。最后,将 docker的网桥删除,并重启docker服务

[root@DockerImages ~]# pkill docker                         #终止进程
[root@DockerImages ~]# iptables -t nat -F                 	 #清空nat表的所有链
[root@DockerImages ~]# ifconfig docker0 down        		 #停止docker默认网桥
[root@DockerImages ~]# yum install bridge-utils -y	   # 部分机器是无法使用brctl,所以需要提前安装
[root@DockerImages ~]# brctl delbr docker0                  #删除网桥  
[root@DockerImages ~]# systemctl restart docker             #重启docker
[root@DockerImages ~]# docker run -d -p 5000:5000 --restart=always --name registry docker.io/registry

在私有仓库上传、下载、搜索镜像
创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为 192.168.13.133:5000 。

 

私有仓库

第一步:给镜像打标记

使用 docker tag 将 5b117edd0b76 这个镜像标记为 192.168.13.133:5000/ubuntu3 (格式为 docker tag
IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] )。

[root@DockerImages ~]# docker  tag  docker.io/ubuntu:12.04   192.168.13.133:5000/ubuntu3:latest12

第二步:上传标记的镜像

使用 docker push 上传标记的镜像。

[root@DockerImages ~]# docker push  192.168.13.133:5000/ubuntu3:latest12
The push refers to a repository [192.168.13.133:5000/ubuntu3]
3efd1f7c01f6: Pushed 
73b4683e66e8: Pushed 
ee60293db08f: Pushed 
9dc188d975fd: Pushed 
58bcc73dcf40: Pushed 
latest12: digest: sha256:ff38d3ab43a1f8ff7a83312369313e5b1b913df56d19c21b12029fc682783df4 size: 1359

用 curl 查看仓库中的镜像。

[root@DockerImages ~]# curl 192.168.13.133:5000/v2/_catalog
{"repositories":["ubuntu3"]}
[root@DockerImages ~]# 

出现epositories":["ubuntu3"]}表明镜像已经被成功上传了,里面有一个名叫ubuntu3的镜像。

现在可以到另外一台机器去下载这个镜像。

注意:重要的是事情说三遍,这里有一个坑,在下载前需要修改/etc/docker/daemon.json文件,将文件内容{}替换为{ "insecure-registries":["192.168.13.133:5000"]},修改完后重启docker服务
注意:重要的是事情说三遍,这里有一个坑,在下载前需要修改/etc/docker/daemon.json文件,将文件内容{}替换为{ "insecure-registries":["192.168.13.133:5000"]},修改完后重启docker服务
注意:重要的是事情说三遍,这里有一个坑,在下载前需要修改/etc/docker/daemon.json文件,将文件内容{}替换为{ "insecure-registries":["192.168.13.133:5000"]},修改完后重启docker服务
如果没有修改daemon.json文件,在下载镜像时出现“Get https://192.168.13.133:5000/v1/_ping: http: server gave HTTP response to HTTPS client” ,表示下载失败

[root@DockerOne ~]# docker pull 192.168.13.133:5000/ubuntu3:latest12
Trying to pull repository 192.168.13.133:5000/ubuntu3 ... 
latest12: Pulling from 192.168.13.133:5000/ubuntu3
Digest: sha256:ff38d3ab43a1f8ff7a83312369313e5b1b913df56d19c21b12029fc682783df4
Status: Downloaded newer image for 192.168.13.133:5000/ubuntu3:latest12

[root@DockerOne ~]# docker  images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
192.168.13.133:5000/ubuntu3   latest12            5b117edd0b76        2 years ago         104 MB

如有问题,可在下方留言或加qq:1421691474咨询。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值