【云原生丨Docker系列5】私有镜像仓库的使用方法

转载 发布者:陈橘又青 发表于:2022-07-22

前言

在前面的章节中,我们介绍了Docker容器,镜像,以及定制镜像的相关操作,本节我们来了解一下私有镜像仓库的使用方法。

目录

一、Docker Hub

注册

登录

注销

二、拉取镜像

三、推送镜像

四、私有仓库

五、在私有仓库上传、搜索、下载镜像

六、注意事项

Ubuntu 14.04, Debian 7 Wheezy

Ubuntu 16.04+, Debian 8+, centos 7

其它补充

一、Docker Hub

⽬前 Docker 官⽅维护了⼀个公共仓库 Docker Hub ,⼤部分需求都可以通过在 Docker Hub 中直接下 载镜像来实现。如果你觉得拉取 Docker Hub 的镜像⽐较慢的话,我们可以配置⼀个镜像加速 器:http://docker-cn.com/,当然国内⼤部分云⼚商都提供了相应的加速器,简单配置即可。

注册

你可以在 https://cloud.docker.com 免费注册⼀个 Docker 账号。

登录

通过执⾏ docker login 命令交互式的输⼊⽤户名及密码来完成在命令⾏界⾯登录 Docker Hub

注销

你可以通过 docker logout 退出登录。

二、拉取镜像

你可以通过 docker search 命令来查找官⽅仓库中的镜像,并利⽤ docker pull 命令来将它下载到本地。例如以 centos 为关键词进⾏搜索:

$ docker search centos 
NAME DESCRIPTION 
STARS OFFICIAL AUTOMATED 
centos The official build of CentOS. 
465 [OK] 
tianon/centos CentOS 5 and 6, created using rinse instea 
... 28 
blalor/centos Bare-bones base CentOS 6.5 image 
6 [OK] 
saltstack/centos-6-minimal 
6 [OK] 
tutum/centos-6.4 DEPRECATED. Use tutum/centos:6.4 instead. 
... 5 [OK]

可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、收藏数(表示该镜像的受关注程度)、是否官⽅创建、是否⾃动创建

官⽅的镜像说明是官⽅项⽬组创建和维护的, automated 资源允许⽤户验证镜像的来源和内容。

根据是否是官⽅提供,可将镜像资源分为两类。

1.类似 centos 这样的镜像,被称为基础镜像或根镜像。这些基础镜像由 Docker 公司创建、 验证、⽀持、提供。这样的镜像往往使⽤单个单词作为名字。

2.⽐如 tianon/centos 镜像,它是由 Docker 的⽤户创建并维护的,往往带有⽤户名 称前缀。可以通过前缀 username/ 来指定使⽤某个⽤户提供的镜像,⽐如 tianon ⽤户。

另外,在查找的时候通过 --filter=stars=N 参数可以指定仅显示收藏数量为 N 以上的镜像。下载官⽅ centos 镜像到本地 

$ docker pull centos 
Pulling repository centos 
0b443ba03958: Download complete 
539c0211cd76: Download complete 
511136ea3c5a: Download complete 
7064731afe90: Download complete
三、推送镜像

⽤户也可以在登录后通过 docker push 命令来将⾃⼰的镜像推送到 Docker Hub。以下命令中的 username 请替换为你的 Docker 账号⽤户名。

$ docker tag ubuntu:17.10 username/ubuntu:17.10 
$ docker image ls 
REPOSITORY TAG IMAGE ID CREATED SIZE 
ubuntu 17.10 275d79972a 86 6 days ago 94.6MB 
username/ubuntu 17.10 275d79972a 86 6 days ago 94.6MB 
$ docker push username/ubuntu:17.10 
$ docker search username 
NAME DESCRIPTION STARS OFFICIAL AUTOMATED 
username/ubuntu
四、私有仓库

有时候使⽤ Docker Hub 这样的公共仓库可能不⽅便,⽤户可以创建⼀个本地仓库供私⼈使⽤。

docker-registry 是官⽅提供的⼯具,可以⽤于构建私有的镜像仓库。本⽂内容基于 docker-registry v2.x 版本。你可以通过获取官⽅ registry 镜像来运⾏。

$ docker run -d -p 5000:5000 --restart=always --name registry registry

这将使⽤官⽅的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的 arb/registry ⽬录下。你可以通过 -v 参数来将镜像⽂件存放在本地的指定路径。例如下⾯的例⼦将上传的镜像放到本地的 /opt/data/registry ⽬录。

$ docker run -d \ 
-p 5000:5000 \ 
-v /opt/data/registry:/var/lib/registry \ 
registry
五、在私有仓库上传、搜索、下载镜像

创建好私有仓库之后,就可以使⽤ docker tag 来标记⼀个镜像,然后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000。先在本机查看已有的镜像。

$ docker image ls 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB

使⽤ docker tag ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest。格式为:

docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

$ docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest 
$ docker image ls 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 
ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB 
127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB

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

$ docker push 127.0.0.1:5000/ubuntu:latest 
The push refers to repository [127.0.0.1:5000/ubuntu] 
373a30c24545: Pushed 
a9148f5200b0: Pushed 
cdd3de0940ab: Pushed
fc56279bbb33: Pushed 
b38367233d37: Pushed 
2aebd096e0e2: Pushed 
latest: digest: sha256:fe4277621f10b5026266932ddf760f5a756d2facd505a94d2da12f4f52f71f5a si ze: 1568

curl 查看仓库中的镜像。

$ curl 127.0.0.1:5000/v2/_catalog 
{"repositories":["ubuntu"]}

这⾥可以看到 {"repositories":["ubuntu"]},表明镜像已经被成功上传了。

先删除已有镜像,再尝试从私有仓库中下载这个镜像。

$ docker image rm 127.0.0.1:5000/ubuntu:latest 
$ docker pull 127.0.0.1:5000/ubuntu:latest 
Pulling repository 127.0.0.1:5000/ubuntu:latest 
ba5877dc9bec: Download complete 
511136ea3c5a: Download complete 
9bad880da3d2: Download complete 
25f11f5fb0cb: Download complete 
ebc34468f71d: Download complete 
2318d26665ef: Download complete 
$ docker image ls 
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE 
127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB
六、注意事项

如果你不想使⽤ 127.0.0.1:5000 作为仓库地址,⽐如想让本⽹段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内⽹地址作为私有仓库地址,这时你会发现⽆法成功推送镜像。

这是因为 Docker 默认不允许⾮ HTTPS ⽅式推送镜像。我们可以通过 Docker配置选项来取消这个限制。

Ubuntu 14.04, Debian 7 Wheezy

对于使⽤ upstart 的系统⽽⾔,编辑 /etc/default/docker ⽂件,在其中的 DOCKER_OPTS 中增加如下内容:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registries=192.16 8.199.100:5000"

重新启动服务:

$ sudo service docker restart
Ubuntu 16.04+, Debian 8+, centos 7

对于使⽤ systemd 的系统,请在 /etc/docker/daemon.json 中写⼊如下内容(如果⽂件不存在请新建该⽂件) 

{ 
"registry-mirror": [
"https://registry.docker-cn.com" 
],
"insecure-registries": [ 
"192.168.199.100:5000"
] 
}

注意:该⽂件必须符合 json 规范,否则 Docker 将不能启动。 

其它补充

对于 Docker for Windows、Docker for Mac 在设置中编辑 daemon.json 增加和上边⼀样的字符串即可。

相关标签:云原生镜像Docker容器
声明:本文来自用户分享或转自网络,版权属于原作者,内容中的观点不代表编程技术网的观点。文章内容如有侵权,请联系管理员(QQ:3106529134)删除,本站将在一月内处理。
来源:aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzYzOTQ3NDk5L2FydGljbGUvZGV0YWlscy8xMjU4NzAyNDA=