首页 > 其他分享 >Docker | 创建私有库并了解将项目放入和拉取到私有库的流程

Docker | 创建私有库并了解将项目放入和拉取到私有库的流程

时间:2024-11-03 17:15:19浏览次数:3  
标签:docker 私有 和拉取 Registry 镜像 Docker curl

搭建私有库并推送镜像

  • 概念
    在这里插入图片描述

Docker Registry

Docker Registry 是 Docker 生态系统中用于存储、分发 Docker 镜像的服务。它允许用户将本地构建的镜像推送到远程服务器,也可以从远程服务器拉取镜像到本地运行。Docker Registry 支持用户自行搭建私有的镜像存储库(私有仓库),以便对镜像进行管理和分发。

Docker Registry 的主要功能包括:

  1. 存储镜像:Registry 负责存储 Docker 镜像的基本层和继承层。
  2. 分发镜像:用户可以通过 Registry 下载(拉取)和上传(推送)镜像。
  3. 认证和授权:Registry 可以与 Index 服务配合,管理用户的认证和授权,控制对镜像的访问。
  4. 镜像仓库管理:Registry 管理多个 Repository,每个 Repository 包含一个或多个镜像,镜像通过名称和标签(Tag)来区分。
  5. 镜像清理:随着时间的推移,Registry 中可能会存储大量的无用镜像。Docker Registry 提供了镜像清理机制,用于删除不再使用的镜像层,释放存储空间。

Docker Registry 的两种主要实现包括:

  1. Docker Hub:官方的公共镜像仓库,支持公开和私有的镜像存储。
  2. 私有 Docker Registry:用户可以自己搭建和管理的镜像仓库,通常用于企业内部的镜像存储。

Docker Registry 的工作流程大致如下:

  • 用户要获取并下载镜像:用户发送请求到 Index 服务下载镜像,Index 响应返回 Registry 信息和 Token,用户通过 Token 和 Registry 沟通下载镜像。
  • 用户要上传镜像到 Registry:用户发送带证书请求到 Index 要求分配库名,成功后将镜像和 Token 一起推送到 Registry 中。
  • 用户要从 Index 或 Registry 中删除镜像:用户发送删除请求,Registry 与 Index 确认后执行删除操作。

Docker Registry 是 Docker 镜像管理的核心组件,无论是使用官方的 Docker Hub 还是搭建私有仓库,都提供了灵活且高效的镜像存储和分发方式。

1.下载Docker registry镜像

registry是一个镜像,也需要拉取
在这里插入图片描述
在这里插入图片描述

2.运行私有库Registry,相当于本地有个私有Docker hub

启动私有仓库的命令: docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

在这里插入图片描述

# 命令:
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry

-d : 后台运行容器并返回容器D,也即启动守护式容器(后台运行)
-p:指定瑞口映射,小写p   端口映射 -p hostPort:containerPort

在这里插入图片描述

3. ubuntu增加ifconfig命令并生成新镜像⭐

根据下面步骤,给ubuntu增加ifconfig命令并生成新的镜像

1. 从Hub上下载Ubuntu镜像到本地并成功运行

	docker pull ubuntu

2. 原始的Ubuntu镜像是不带着ifconfig命令的

	root@b6f15583f362:/# ifconfig
	bash: ifconfig: command not found

3. 外网连通的情况下,安装ifconfig命令并测试通过

	1. apt-get update   # 此命令用于更新您的系统上的软件包索引。
	2. aptget install net-tools # 此命令用于安装 net-tools 软件包,它包含了一组基本的网络诊断工具,如 ifconfig、netstat、route 等。

	测试:
	root@b6f15583f362:/# ifconfig
	eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
	        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
	        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
	        RX packets 4061  bytes 26654020 (26.6 MB)
	        RX errors 0  dropped 0  overruns 0  frame 0
	        TX packets 3151  bytes 225239 (225.2 KB)
	        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
	
	lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
	        inet 127.0.0.1  netmask 255.0.0.0
	        inet6 ::1  prefixlen 128  scopeid 0x10<host>
	        loop  txqueuelen 1000  (Local Loopback)
	        RX packets 0  bytes 0 (0.0 B)
	        RX errors 0  dropped 0  overruns 0  frame 0
	        TX packets 0  bytes 0 (0.0 B)
	        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4. 安装完成后,commit我们自己的新镜像

	[root@localhost ~]# docker ps
	CONTAINER ID   IMAGE      COMMAND                   CREATED          STATUS          PORTS                                       NAMES
	93c18a15dd73   ubuntu     "bash"                    40 seconds ago   Up 40 seconds                                               upbeat_bartik
	1f847f79aadb   registry   "/entrypoint.sh /etc…"   12 minutes ago   Up 12 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   charming_mclean
	
	[root@localhost ~]# docker commit -m='+net_tools-ifconfig' -a='zyan' 93c18a15dd73 zyan/hgubuntu:1.2
	sha256:aeb2e37a9b2e723689baa06267a291695eeeb35952ef68e484bb5e3d524e6d75


5. 启动我们的新镜像并和原来的对比
		
	[root@localhost ~]# docker images
	REPOSITORY                                                              TAG       IMAGE ID       CREATED          SIZE
	zyan/hgubuntu                                                           1.2       aeb2e37a9b2e   16 seconds ago   78.1MB
	crpi-yy9yj7syn08stogn.cn-shanghai.personal.cr.aliyuncs.com/zhenh/zyan   1.1       ca7abefb7af7   17 hours ago     191MB
	ubuntu                                                                  latest    59ab366372d5   2 weeks ago      78.1MB
	registry                                                                latest    75ef5b734af4   13 months ago    25.4MB
	redis                                                                   6.0.8     16ecd2772934   4 years ago      104MB
	[root@localhost ~]#

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • commit
    在这里插入图片描述

4.curl验证私服库上有什么镜像

镜像仓库的地址部署在虚拟机上,所以这里写你虚拟机的ip地址,结果发现啥也没有
这里的:5000,因为我们启动时,传了一个-p参数,映射我们主机的5000端口

curl -XGET http://你的虚拟机ip:5000/v2/_catalog  # 通过ifconfig查看

在这里插入图片描述

什么是curl?

curl 是一个功能强大的命令行工具,用于传输数据,支持多种协议,包括 HTTP、HTTPS、FTP、SCP、SFTP 等。它常用于从命令行发送请求到服务器,下载文件,测试网络服务等。

以下是 curl 命令的一些常用用法:

  1. 发送 HTTP GET 请求

    curl http://example.com
    

    这会向 http://example.com 发送一个 GET 请求,并显示响应内容。

  2. 发送 HTTPS GET 请求

    curl https://example.com
    

    这会向 https://example.com 发送一个 GET 请求,并显示响应内容。

  3. 下载文件

    curl -O http://example.com/file.zip
    

    使用 -O 参数,curl 会将下载的文件保存为 URL 中指定的文件名。

  4. 发送 HTTP POST 请求

    curl -d "param1=value1&param2=value2" http://example.com/resource
    

    使用 -d 参数发送 POST 请求,并传递数据。

  5. 发送带有 HTTP 头的请求

    curl -H "X-My-Header: 123" http://example.com
    

    使用 -H 参数添加自定义 HTTP 头。

  6. 使用用户名和密码进行认证

    curl -u username:password http://example.com
    

    使用 -u 参数提供基本认证信息。

  7. 上传文件

    curl -F "[email protected]" http://example.com/upload
    

    使用 -F 参数上传文件。

  8. 使用代理

    curl -x http://proxyserver:port http://example.com
    

    使用 -x 参数通过代理服务器发送请求。

  9. 查看请求的详细信息

    curl -v http://example.com
    

    使用 -v 参数显示请求的详细过程,包括请求头和响应头。

  10. 保存响应头

    curl -D headers.txt http://example.com
    

    使用 -D 参数保存响应头到文件。

curl 命令非常灵活,可以通过各种参数来定制请求。这些只是一些基本用法,curl 还有很多其他功能和选项,可以通过查看 curl 的手册页(man curl)或在线文档来获取更多信息。

5. 将新镜像修改符合私服规范的Tag

在这里插入图片描述

docker   tag   镜像:Tag   Host:Port/Repository:Tag

在这里插入图片描述

6.修改配置文件使之支持http

在这里插入图片描述
上述理由:docker默认不允许htp方式推送镜像,通过配置选项来取消这个限制。====>修改完后如果不生效,建议重启docker

[root@localhost docker]# systemctl daemon-reload   # 激活配置文件
[root@localhost docker]# systemctl restart docker  # 重启docker  每次修改配置 一定要重启
  • 从新运行docker私有仓库
    在这里插入图片描述

7. 推送到私有库

放个推送结果图吧,由于tag的作用是复制 起别名 ,因此`IMAGE ID`是共用的

在这里插入图片描述

8.查看私有库上的镜像

在这里插入图片描述

9. 从私有库拉取镜像到本地运行

docker pull 172.21.47.251:5000/zyan/hgubuntu:1.2

在这里插入图片描述

标签:docker,私有,和拉取,Registry,镜像,Docker,curl
From: https://blog.csdn.net/HG0724/article/details/143325985

相关文章

  • Docker和k8s核心概念(理解友好版)
    背景这是在HWL负责网校云业务线测试时,给同事分享的基础概念文档。目录:一.Docker核心概念二.Kubernetes是什么及架构三.Kubernetes核心概念四.Deployment部署Pod操作一、Docker核心概念 1、为什么是Docker虚拟机:基础设施(Infrastructure)。服务器,或者是云主机。主......
  • dockerfile 和 docker compose
    目录1.dockerfile和dockercompose区别 主要区别目的:格式:使用场景:2.Dockerfile2.1基本格式 2.2模块解析 2.3例子 3.dockercompose 3.1安装 3.2格式 3.3执行1.dockerfile和dockercompose区别 Dockerfile和DockerCompose是Docker生态系统中两个......
  • docker对nginx.conf进行修改后页面无变化或页面报错
    可能是因为没有重启nginx容器可以执行dockerrestartnginx重启nginx试试引入了其他的配置文件本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个server并且端口号都是80,在打印dockerl......
  • dockerfile中copy与run区别
    本文记录一个很简单的问题,记录该文章的原因是在调试过程中,老眼昏花,因为copy和run的原因,多排错一小时,特此记录。首先看看以下。 COPY:功能:COPY是用来将构建上下文(本地机器的文件系统)中的文件或目录复制到Docker镜像中的指定位置。它只是一个复制操作,不执行......
  • 【docker】—— 部署python项目
    使用docker部署python项目这里默认已经安装好docker并进行了相关配置,只演示使用docker打包并部署一个简单的python项目。更多docker基本操作参考:【docker】——docker常用操作下面是准备好的项目和程序:项目结构:项目:DOCKER_PYTHON_TESE文件:main.ipynb代码如下:#......
  • Docker:网络
    Docker:网络Docker网络架构CNMLibnetwork驱动网络类型命令dockernetworklsdockernetworkinspectdockernetworkcreatedockernetworkconnectdockernetworkdisconnectdockernetworkprunedockernetworkrm网络操作bridgehostcontainernoneDocker网络架......
  • 解决docker安装minio容器时,minio容器启动几秒后自动退出的一种方法
    笔者在部署minio容器时,遇到了以上问题。起初以为是我端口被占用或存储空间不足,经过检测排除了以上问题。以下是最初的安装命令:dockerrun-d--nameminio--restart=always-p9000:9000-e"MINIO_ACCESS_KEY=minio"-e"MINIO_SECRET_KEY=minio123"-v/home/data:/data-v/......
  • 制作一个龙芯旧世界的 dotnet sdk docker 镜像
    以下是我的dockerfile文件,内容特别简单FROMcr.loongnix.cn/library/debian:busterWORKDIR/rootRUNapt-getupdate-y&&\apt-getinstall-y--no-install-recommends\apt-transport-https\ca-certificates\curl\git......
  • MySQL主从复制(docker环境)
    MySQL主从复制示例1创建master容器3307:dockerrun-d--namemysql-master\-p3307:3306\--privileged=true\-v/root/mysql-master/log:/var/log/mysql\-v/root/mysql-master/data:/var/lib/mysql\-v/root/mysql-master/conf:/etc/mysql/conf.d\-eMYSQL_ROO......