Docker-仓库(registry)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:

Docker基本情况

Docker基本命令

Dockerfile

Docker镜像

Docker仓库(本小节属于)

Docker原理

Docker网络&存储&日志

Docker-Compose

Docker番外篇

前面我们无论是从公网仓库下载的镜像还是通过Dockerfile编写的镜像,在绝大多数的情况下,都需要上传到仓库里面,然后再通过仓库分发到其他需要使用的节点,那么仓库是怎么创建的呢?

Docker的官方给我们提供了一个仓库,这个仓库也是以容器方式运行的,这个仓库的镜像名字是registry。

1.下载仓库镜像

bash 复制代码
#这个地址不一定持续可用
docker pull m.daocloud.io/docker.io/library/registry

2.运行仓库容器

首先这里需要注意就是磁盘挂载,要确保用户上传的数据持久化保存在对应的服务器,不会因为容器删除或者故障而丢失数据。其次就是要尽可能包括在他的可用性,需要需要确保服务或者机器重启这个容器会自动启动。再次就是要保证他5000端口对外暴露和容器的名字要方便识别。

bash 复制代码
#当然你还可以根据需要添加其他参数
docker run -d \
-v /data:/var/lib/registry \
--restart=always \
-p 5000:5000 \
--name registry \
m.daocloud.io/docker.io/library/registry

3.修改容器tag

ip路径和名字以现场实际为准。

bash 复制代码
[root@localhost ~]# docker tag \
> m.daocloud.io/docker.io/library/registry \
> 192.168.31.205:5000/registry

4.上传镜像

yaml 复制代码
#上传镜像需要先修改daemon.json,并重启docker服务
{
    "insecure-registries": ["192.168.31.43:5000"]
}
[root@localhost ~]# docker push \
> 192.168.31.205:5000/registry
Using default tag: latest
The push refers to repository [192.168.31.205:5000/registry]
7827cbf539f4: Pushed 
d28d4e94d6f3: Pushed 
028476fc17e0: Pushed 
96a01afdff54: Pushed 
f9fc769d3350: Pushed 
latest: digest: sha256:2e3dacd68b23ae633b4e46e2702f7c4fcfc1e6bd0469935f5fdc9d8ef630179a size: 1363

5.查看仓库有哪些镜像

csharp 复制代码
# 当然这里只有一个镜像,如果有多个镜像则在[]里面可以到具体的名字
[root@localhost ~]# curl 192.168.31.205:5000/v2/_catalog
{"repositories":["registry"]}

6.查看镜像有哪些tag

csharp 复制代码
#这里的rgistry就是容器的名字,具体以现场路径和名字为准
#下面的latest 和2.8.3 就是他有的tag
[root@localhost ~]# curl 192.168.31.205:5000/v2/registry/tags/list
{"name":"registry","tags":["latest","2.8.3"]}

7.镜像&tag删除

一般而言,默认情况下是不能删除镜像和tag,后面我们会讲一个开源的仓库:Harbor他可以通过web平台进行操作,就可以删除。

总结

这个仓库,相对还是很简单的,需要理解就2个地方:仓库的ip+端口就是他上传的服务器;后面的路径和名字则是需要上传的路径和镜像名字。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
明明跟你说过21 分钟前
在【k8s】中部署Jenkins的实践指南
运维·ci/cd·云原生·容器·kubernetes·jenkins
酥暮沐24 分钟前
K8S 集群搭建——cri-dockerd版
linux·容器·kubernetes
沉默的八哥30 分钟前
RBAC的工作原理,以及如何限制特定用户访问
运维·kubernetes
美好的事情总会发生43 分钟前
SDIO(Secure Digital Input Output)详解
linux·嵌入式硬件·硬件工程
liuyunluoxiao1 小时前
进程(上)【Linux操作系统】
linux
琪琪花2 小时前
sshfs 将远程服务器上的文件系统挂载到本地目录
linux·运维·服务器
Yuanymoon2 小时前
【由技及道】镜像星门开启:Harbor镜像推送的量子跃迁艺术【人工智障AI2077的开发日志010】
java·docker·jenkins·harbor·devops
dreamczf2 小时前
基于Linux系统的边缘智能终端(RK3568+EtherCAT+PCIe+4G+5G)
linux·人工智能·物联网·5g
wayuncn2 小时前
哈尔滨服务器租用的流程
运维·服务器
钡铼技术物联网关2 小时前
导轨式ARM工业控制器:组态软件平台的“神经中枢”
linux·数据库·人工智能·安全·智慧城市