IT评测·应用市场-qidao123.com技术社区

标题: 【Docker】Docker Registry(镜像仓库) [打印本页]

作者: 兜兜零元    时间: 2024-6-14 22:53
标题: 【Docker】Docker Registry(镜像仓库)
一、什么是 Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。
镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。
整体视图如下:


一个容器镜像包含了两个部分,一个是 元数据,其实就是由dockerfile 构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的checksum这些信息都会记录下来,另有最终的可执行文件在哪就是在存储数据里面,就是在一个一个的blob里面,真正占有空间的就是这些 blob。

二、镜像仓库分类

按是否对外开放分别,也是研发职员常说的
按供应商和面向群体分别

三、镜像仓库工作机制


四、常用的镜像仓库

可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
  1. Shell
  2. {
  3.         # 注意如果最外层以及你给有了配置,不要直接覆盖,而是将下面的内容添加,然
  4.         后确保 json 的格式正确
  5.         "registry-mirrors": [
  6.         "https://hub-mirror.c.163.com",
  7.         "https://mirror.baidubce.com"
  8.    ]
  9. }
复制代码
添加完成后需要重新加载设置,重启 Docker:
  1. Shell
  2. # 加载配置
  3. sudo systemctl daemon-reload
  4. # 重启 docker
  5. sudo systemctl restart docker
  6. #查看 docker 状态
  7. sudo systemctl status docker
复制代码

五、常用命令

镜像仓库命令

   命令清单
  

   docker login: 登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
  
  1. docker login [OPTIONS] [SERVER]
复制代码

  1. #root用户下
  2. docker login
复制代码

当然我们也可以通过指定选项来登录:
  1. docker login -u cjl1314520
复制代码


   docker pull: 从镜像仓库中拉取或者更新指定镜像
  
  1. docker pull [OPTIONS] NAME[:TAG|@DIGEST]
复制代码

  1. docker image pull
复制代码


   docker push: 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
  
  1. docker push [OPTIONS] NAME[:TAG]
复制代码

  1. docker image push
复制代码

这里我们不能直接往nginx站点里推送镜像

我们需要先在站点上创建仓库:


这里我们需要穿插一条命令:

使用命令推送镜像到我们的仓库:
  1. docker push cjl1314520/mybitnginx:v1.23.4
复制代码

这里我们可以看到,镜像已经被推送到我们在dockerhub上创建的仓库里了。

下面我们拉取一下我们本身仓库中的镜像:
  1. docker pull cjl1314520/mybitnginx:v1.23.4
复制代码

当然我们也可以使用 docker push cjl1314520/mybitnginx -a 把所有的镜像都推送到docker hub仓库中。

   docker search: 从 Docker Hub 查找镜像
  
  1. docker search [OPTIONS] TERM
复制代码

  1. docker search nginx
复制代码

  1. #查找所有stars=10的nginx
  2. docker search -f stars=10 nginx
复制代码

  1. #查看nginx完整的镜像描述
  2. docker search --no-trunc nginx
复制代码


   docker logout
登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
  
  1. docker logout
  2. [SERVER]
复制代码

  1. docker logout
复制代码


镜像命令(部分)

   docker images
列出本地镜像
  
  1. docker images
  2. [OPTIONS] [REPOSITORY[:TAG]]
复制代码

  1. docker image ls, docker image list
复制代码

  1. docker images
复制代码

  1. #查找nginxdocker images
  2. nginx#查找详细的nginx版本docker images
  3. nginx:1.23.4
复制代码

当然,docker命令是可以和Linux下的命令结合使用的。


   docker image inspect: 查察镜像详细信息
  
  1. docker image inspect [OPTIONS] IMAGE [IMAGE...]
复制代码

  1. #查看镜像详细信息
  2. docker image inspect nginx:1.23.4
复制代码

  1. #通过ID来查看镜像的详细信息
  2. docker image inspect IMAGE ID
复制代码

   docker tag: 标记本地镜像,将其归入某一仓库
  
  1. docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
复制代码

  1. docker image tag
复制代码

  1. docker tag ac232364af84 cjl1314520/mybitnginx:vv
复制代码


容器命令(部分)

   docker run: 创建一个新的容器并运行一个命令
  
  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
复制代码

  1. docker container run
复制代码

起首查察我们所在的操纵体系的版本:

去docker hub上找一个Ubuntu 20.04的镜像

拉取该镜像

  1. #不带任何参数--没有任何效果
  2. docker run ubuntu:20.04
  3. #带参数--可以看到,终端变成了Ubuntu操作系统
  4. docker run -it ubuntu:20.04
复制代码



背景运行容器
  1. docker run -d nginx:1.24.0
复制代码

使用 docker ps 查察


  1. docker run -it ubuntu:20.04 bash
复制代码


  1. docker run -d -p 8081:80 nginx:1.24.0
复制代码



  1. docker run -d -P nginx:1.24.0
复制代码

  1. curl 127.0.0.1:32769
复制代码


  1. #--name选项
  2. docker run -d --name mynginx1 nginx:1.24.0
  3. #-h选项
  4. docker run -it -h myubuntu ubuntu:20.04 bash
  5. #-e选项
  6. docker run -it -h myubuntu -e myenv=test ubuntu:20.04 bash
复制代码




当我们不指定内存时,可以看一下:
  1. docker run -d --name mynginx1 --cpuset-cpus="1" nginx:1.24.0
复制代码

  1. docker run -d --name mynginx2 -m 500m nginx:1.24.0
复制代码


  1. #在一个终端启动一个容器
  2. docker run -it --name myubuntu1 ubuntu:20.04 bash
  3. #另一个终端启动另一个容器
  4. docker run -it --name myubuntu2 --link myubuntu1:mywebsite1 ubuntu:20.04 bash
复制代码


  1. docker run -it --name myubuntu1 --rm ubuntu:20.04 bash
复制代码


   docker ps: 列出容器
  
  1. docker ps [OPTIONS]
复制代码

  1. docker container ls, docker container list, docker container ps
复制代码

  1. docker ps
  2. docker ps -a
  3. docker ps -f name =mynginx1
  4. docker ps -f name=mynginx1
  5. docker ps --format json
  6. docker ps -l
  7. docker ps -n 2
  8. docker ps -q
  9. docker ps -s
复制代码


六、docker镜像仓库实战

综合实战一:搭建一个 nginx 服务

   查找并拉取nginx镜像
     修改nginx首页
  
综合实战二:Docker hub上创建本身私有仓库

   Busybox 简介
  BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。 BusyBox 包含了一些简朴的工具,例如 ls、 cat 和 echo 等等,还包含了一些更大、更复杂的工具,例如:grep、 find、 mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简朴的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的很多工具和命令,也包含了 Linux 体系的自带的 shell。 busybox 是一个集成了一百多个最常用 linux 命令和工具的软件,他乃至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却只有戋戋 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到本身的仓库。
   宿主机CentOS上安装BusyBox
  
  1. #创建目录
  2. mkdir -p /data/mybusybox
  3. #进入该目录
  4. cd /data/mybusybox/
复制代码
  1. wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate
复制代码

  1. chmod +x busybox
复制代码


   Docker hub上创建本身的私有仓库
  





综合实战三:阿里云创建本身的私有仓库

   创建账号
  进入 阿里云,点击右上角完成注册,可以使用支付宝快速注册

   创建仓库
  







   登录并推送镜像
  



由于仓库创建时是私有的,以是当我们退出账号时,是不能拉取镜像并推送镜像的。

   我入职了一个公司,开发一个镜像,我怎么选择用哪个作为底子镜像啊?
  一样寻常大型公司有本身专门的镜像制作构造,他们会选取对应的体系版本作为底子镜
像,例如华为某部分选取欧拉来制作底子镜像,腾讯选择本身的 TLinux 制作底子镜像,
不会由于出现 CentOS 不维护了无法使用的情况,而且这些镜像一样寻常都会经过严酷的
安全扫描,然后作为底子组件提供给各个部分。一样寻常的公司往往也会同意镜像的底子
版本,以是这个选择个人一样寻常不用太多纠结。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4