linux中搭建docker私有仓库一:Registry
1.官方仓库Docker Hubdocker仓库(Repository)是用于存放镜像的地方。官方维护了一个公共的镜像仓库(Docker Hub),一般大部分的镜像我们可以直接从Docker Hub中进行下载。我们可以在linux中直接使用 docker search 镜像名 来查找官方镜像。例如查找nginx镜像:可以看到Docker Hub中收录的镜像名、描述、关注数、是否官方创建、是...
1.官方仓库Docker Hub
docker仓库(Repository)是用于存放镜像的地方。官方维护了一个公共的镜像仓库(Docker Hub),一般大部分的镜像我们可以直接从Docker Hub中进行下载。
我们可以在linux中直接使用 docker search 镜像名 来查找官方镜像。例如查找nginx镜像:
可以看到Docker Hub中收录的镜像名、描述、关注数、是否官方创建、是否自动创建信息。官方镜像是官方维护和创建的,automated 资源允许用户验证镜像的来源和内容。jwilder/nginx-proxy这种是有docker用户创建并维护的。我们可以通过在查找的后面加上–filter=stars=N显示收藏数量在N以上的镜像。
我们可以通过 docker pull nginx将官方镜像下载到本地。一般这种不指定版本的会下载最新版本。
如果需要将自己镜像推送到docker hub中就需要你注册docker hub账号,使用docker push userame去推送。
2.私有仓库Registry
考虑到网络及安全性方面,有时候使用公共仓库不太方便,这时候需要创建一个私有仓库。这时候需要借助于docker-registry。docker-registry是一个无状态、高度可扩展的服务的应用程序,可以用来存储私有的docker镜像。这里要求docker引擎版本在1.6.0及以上版本。这也是官方提供的私有仓库镜像。
2.1 安装运行docker-registry
我们可以通过官方的docker-registry镜像来运行。
docker run -d -p 5000:5000 --restart=always --name registry registry
默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径。例如下面的例子将上传的镜像放到本地的 /opt/docker/registry 目录
docker run -d \
-p 5000:5000 \
--restart=always \
-v /opt/docker/registry:/var/lib/registry \
registry
启动成功后通过curl your-server-ip:5000/v2/_catalog查看所有的镜像
[root@admin docker]# curl 192.168.80.128:5000/v2/_catalog
{"repositories":[]}
2.2 上传镜像到私有仓库
首先我们需要在/etc/docker/daemon.json(这个文件如果没有,请先创建)中配置下我们的私有仓库,在其中加入以下内容(其中第一个是配置的镜像加速器,这里的配置文件仅限于centos7+,debian 8+, unbuntu 16.04+)
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.80.128:5000"
]
}
然后需要重启下docker。systemctl restart docker,如果在run register时没有加–restart=always需要再启动一下register。
使用docker image ls查看我们的镜像,这里我将centos上传到我们私有的仓库去。首先需要给上传的镜像打tag.
docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname
然后使用dcoker push上传
docker push your-registry-server-ip:5000/your-image-name:tagname
我测试时候是将centos打包上传如下:
[root@admin docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0f3e07c0138f 5 weeks ago 220MB
registry latest f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
[root@admin docker]# docker tag centos:latest 192.168.80.128:5000/centos:latest
[root@admin docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0f3e07c0138f 5 weeks ago 220MB
192.168.80.128:5000/centos latest 0f3e07c0138f 5 weeks ago 220MB
registry latest f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
[root@admin ~]# docker push 192.168.80.128:5000/centos:latest
The push refers to repository [192.168.80.128:5000/centos]
9e607bb861a7: Pushed
latest: digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf size: 529
[root@admin ~]# curl 192.168.80.128:5000/v2/_catalog
{"repositories":["centos"]}
2.3 下载镜像
docker pull your-server-ip:5000/your-image-name:tagname
[root@admin ~]# docker image rm 192.168.80.128:5000/centos:latest
Untagged: 192.168.80.128:5000/centos:latest
Untagged: 192.168.80.128:5000/centos@sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf
Deleted: sha256:0f3e07c0138fbe05abcb7a9cc7d63d9bd4c980c3f61fea5efa32e7c4217ef4da
Deleted: sha256:9e607bb861a7d58bece26dd2c02874beedd6a097c1b6eca5255d5eb0d2236983
[root@admin ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
[root@admin ~]# docker pull 192.168.80.128:5000/centos:latest
latest: Pulling from centos
729ec3a6ada3: Pull complete
Digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf
Status: Downloaded newer image for 192.168.80.128:5000/centos:latest
192.168.80.128:5000/centos:latest
[root@admin ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.80.128:5000/centos latest 0f3e07c0138f 5 weeks ago 220MB
registry latest f32a97de94e1 8 months ago 25.8MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
更多推荐
所有评论(0)