微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

菜鸟系列——docker仓库(2)

1.仓库Registry

我们一般的镜像都是保存在仓库中,这样在其他服务器上可以直接从仓库获取镜像。仓库一般分为公共registry和私有registry。公共registry一般是Docker公司负责维护的Docker Hub。我们可以将自己的镜像保存在Docker Hub上。

1.1 公共registry

这里主要介绍Docker Hub的操作,当然也存在一些其他公共registry。接下来将介绍Docker Hub的一些操作。

  • 进行账号注册 https://hub.docker.com,并创建仓库
  • 在宿主机进行账号登陆
docker login -u eggsyz
[centos@jiliguo ~]$ docker pull Nginx
Using default tag: latest
latest: Pulling from library/Nginx
27833a3ba0a5: Already exists 
ea005e36e544: Pull complete 
d172c7f0578d: Pull complete 
Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
Status: Downloaded newer image for Nginx:latest
[centos@jiliguo ~]$ docker images eggsyz/Nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
eggsyz/Nginx        latest              27a188018e18        3 days ago          109MB
docker push eggsyz/Nginx
The push refers to repository [docker.io/eggsyz/Nginx]
fc4c9f8e7dac: Layer already exists 
912ed487215b: Layer already exists 
5dacd731af1b: Layer already exists 
latest: digest: sha256:c10f4146f30fda9f40946bc114afeb1f4e867877c49283207a08ddbcf1778790 size: 948

在Docker Hub查看,看到我们上传到镜像

image


后面我们就可以通过docker pull eggsyz/Nginx来下载这个镜像了,各位看官可以试试能不能下载。

1.2私有registry

虽然公有仓库很方便,也很简单,但是存在以下几个问题。

  • 需要网络
  • 上传到镜像别人可以访问
  • 平时工作的镜像是不能公开的。
    因此,私有仓库就诞生了。其实搭建私有registry的方式也非常简单,这也是一个容器,下载镜像,运行容器即可。
    1.下载registry镜像
[centos@jiliguo ~]$ docker pull registry
Using default tag: latest
latest: 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:latest

2.运行容器

[centos@jiliguo ~]$ docker run -d -p 6666:5000 -v /home/centos/registry/:/var/lib/registry registry
f59914248a09f3fe4b7afccef5c3585afc6406c428b1030840188124ae8fb728
[centos@jiliguo ~]$ docker ps
CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS              PORTS                                                                       NAMES
f59914248a09        registry                                  "/entrypoint.sh /etc…"   7 seconds ago       Up 5 seconds        0.0.0.0:6666->5000/tcp    

3.镜像命名

docker tag eggsyz/Nginx 192.168.9.110:6666/eggsyz/Nginx

4.上传镜像

[centos@jiliguo ~]$ docker run -d -p 6666:5000 -v /home/centos/registry/:/var/lib/registry registry
c56e13b18ea1501e63b976387269228dcc87348374a8c6ff3a5da48f97223bde
[centos@jiliguo ~]$ docker push 192.168.9.110:6666/eggsyz/Nginx
The push refers to repository [192.168.9.110:6666/eggsyz/Nginx]
fc4c9f8e7dac: Pushed 
912ed487215b: Pushed 
5dacd731af1b: Pushed 
latest: digest: sha256:c10f4146f30fda9f40946bc114afeb1f4e867877c49283207a08ddbcf1778790 size: 948

这一步可能会爆https错误http: server gave HTTP response to HTTPS client
解决方案之一:
在/etc/docker/目录下,创建daemon.json文件。在文件中写入:
{ "insecure-registries":["192.168.9.110:6666"] }
5.下载镜像

docker pull 192.168.9.110:6666/eggsyz/Nginx

私有仓库还可以进行认证等操作。这部分详情请查看https://docs.docker.com/registry/configuration/。好了,仓库基本操作介绍完毕,后续介绍镜像和容器操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐