版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qmqm011/article/details/88830861
安装Docker后,可以利用官方提供的registry镜像来简单搭建一套本地私有仓库。
一、安装Docker Registry
root@ubuntu:/# docker run -d -p 5000:5000 --restart=always --name registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
c87736221ed0: Pull complete
1cc8e0bb44df: Pull complete
54d33bcb37f5: Pull complete
e8afc091c171: Pull complete
b4541f6d3db6: Pull complete
Digest: sha256:3b00e5438ebd8835bcfa7bf5246445a6b57b9a50473e89c02ecc8e575be3ebb5
Status: Downloaded newer image for registry:2
7cb8626263ed3bf44eaa1e55077e3f17c8138914233f40a006dbc61bfdbb2e28
以上命令会自动下载并启动一个registry容器,创建本地的私有仓库服务。可以访问http://192.168.10.128:5000/v2/_catalog测试启动成功:
{"repositories":[]}表示私有仓库搭建成功并且内容为空。
Registry比较关键的参数是配置文件和仓库存储路径。默认的配置文件为容器的/etc/docker/registry/config.yml,通过如下命令,可以指定使用本地主机上的配置文件(如:/home/user/registry-conf):
root@ubuntu:/# docer run -d -p 5000:5000 --restart=always --name registry -v /home/user/registry-conf/config.yml:/etc/docker/registry/config.yml registry:2
默认情况下,镜像存储在容器的/var/lib/registry目录下,可以通过-v参数来将镜像文件存储在本地的指定路径。例如,下面的命令将镜像存储到本地/opt/data/registry目录中:
root@ubuntu:/# docer run -d -p 5000:5000 --restart=always --name registry -v /opt/data/registry:/var/lib/registry registry:2
比较新的Docker版本对安全性要求较高,会要求仓库支持SSL/TLS证书。对于内部使用的私有仓库,可以自行配置证书或者关闭对私有仓库的安全性检查。这里先关闭安全性检查。
修改/etc/docker/daemon.json文件,添加如下内容,保存退出:
{"insecure-registries":["192.168.10.128:5000"]}
之后重启Docker服务:
root@ubuntu:~# systemctl restart docker
root@ubuntu:~#
二、上传镜像到私有仓库
2.1 使用docker tag命令标记镜像
docker tag命令的使用方式如下:
root@ubuntu:~# docker tag --help
Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
例如:
root@ubuntu:~# docker tag ubuntu:18.04 192.168.10.128:5000/ubuntu:18.04
root@ubuntu:~#
2.2 上传标记的镜像
使用docker push上传标记的镜像,该命令的使用方式如下:
root@ubuntu:~# docker push --help
Usage: docker push [OPTIONS] NAME[:TAG]
Push an image or a repository to a registry
Options:
--disable-content-trust Skip image signing (default true)
例如,上传刚刚标记的镜像:
root@ubuntu:~# docker push 192.168.10.128:5000/ubuntu:18.04
The push refers to repository [192.168.10.128:5000/ubuntu]
b57c79f4a9f3: Pushed
d60e01b37e74: Pushed
e45cfbc98a50: Pushed
762d8e1a6054: Pushed
18.04: digest: sha256:f2557f94cac1cc4509d0483cb6e302da841ecd6f82eb2e91dc7ba6cfd0c580ab size: 1150
之后刷新http://192.168.10.128:5000/v2/_catalog,可以看到镜像上传成功: