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+端口就是他上传的服务器;后面的路径和名字则是需要上传的路径和镜像名字。

运维小路

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

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

相关推荐
egoist202315 分钟前
【Linux仓库】超越命令行用户:手写C语言Shell解释器,解密Bash背后的进程创建(附源码)
linux·c语言·bash·xshell·环境变量·命令行参数·内建命令
Lenyiin15 分钟前
《 Linux 修炼全景指南: 八 》别再碎片化学习!掌控 Linux 开发工具链:gcc、g++、GDB、Bash、Python 与工程化实践
linux·python·bash·gdb·gcc·g++·lenyiin
莲华君17 分钟前
Bash Shell:从入门到精通
linux
风雨飘逸19 分钟前
【shell&bash进阶系列】(二十一)向脚本传递参数(shift和getopts)
linux·运维·服务器·经验分享·bash
zly350023 分钟前
删除文件(rm 命令 删除目录)
linux·运维·服务器
被AI抢饭碗的人27 分钟前
linux:线程池
linux·开发语言
曹天骄1 小时前
OSS 传输加速 与 CDN 的区别
运维·阿里云·https
Studying 开龙wu1 小时前
Linux 系统中配置国内源下载时使用pip install 和conda install哪个快?
linux·conda·pip
呱呱巨基1 小时前
Linux 进程控制
linux·c++·笔记·学习
qq_455760851 小时前
docker - 网络
运维·docker·容器