Docker第五章 : Docker仓库

第五章 : Docker仓库

本章知识点:

本章将围绕Docker仓库是Docker用来存储和管理镜像的知识展开,包括Docker 仓库的概念,如何通过docker registry搭建私有化仓库、如何将镜像推送到私有仓库、如何拉取私有镜像,如何验证推送是否成功。

properties 复制代码
Linux 内核:3.10.0-1062.el7.x86_64  Docker version 25.0.0

Docker仓库是什么 ?

Docker仓库是Docker用来存储和管理镜像的地方。Docker提供了一个注册服务器(Registry)来保存多个仓库,每个仓库可以包含多个具备不同tag的镜像。仓库分为公有仓库和私有仓库,公有仓库是指开放给用户使用、允许用户管理镜像的仓库,例如Docker Hub;而私有仓库则是由用户自行搭建的存放镜像的云环境。

Docker仓库的概念类似于互联网上的代码托管服务,但主要用于镜像的存储和部署。用户可以在Docker仓库中搜索、下载和上传镜像,以构建和运行Docker容器。同时,Docker仓库还提供了版本控制和协作功能,帮助用户更好地管理和共享镜像。

Docker Hub是Docker默认的仓库,用户可以在上面找到许多官方和第三方提供的镜像。除了Docker Hub,还有其他的公有仓库和私有仓库可供选择。用户可以选择使用免费的Docker Hub或其他公有仓库,也可以选择搭建自己的私有仓库来更好地控制和管理Docker镜像。

如何搭建本地私有仓库?

搭建

1、下载registry镜像。在运行Docker的服务器上,拉取registry镜像。可以使用以下命令:

bash 复制代码
docker pull registry:2

2、创建私有仓库目录。在服务器上创建一个目录,用于存储私有仓库的数据。可以使用以下命令:

bash 复制代码
mkdir /data/registry

3、运行registry容器。使用registry镜像在服务器上运行一个容器,并将私有仓库目录挂载到容器中。可以使用以下命令:

bash 复制代码
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry registry:latest

这将启动一个容器,并在容器的5000端口上暴露私有仓库。同时,将服务器上的/data/registry目录挂载到容器的/var/lib/registry目录中,以便存储私有仓库的数据。

4、配置Docker客户端。在客户端机器上,编辑Docker配置文件,添加私有仓库的地址。打开终端,使用文本编辑器打开Docker配置文件,该文件通常位于以下位置:

bash 复制代码
/etc/docker/daemon.json

如果该文件不存在,则创建一个新的空文件。在文件中添加以下内容:

json 复制代码
{  
  "insecure-registries": ["your_private_registry_address:port"]  
}

将"your_private_registry_address:port"替换为您的私有仓库地址和端口号。例如,"192.168.1.100:5000"。

5、重启Docker服务。保存配置文件后,重启Docker服务以使配置生效。在终端中运行以下命令:

bash 复制代码
sudo systemctl restart docker

现在,您已经成功创建了一个私有仓库并配置了Docker客户端。

您可以使用docker push命令将镜像推送到私有仓库中,并使用docker pull命令从私有仓库中拉取镜像。

如何将镜像推送到私有仓 ?

1、首先,确保您已经创建了一个私有仓库,并且已经按照前面的步骤配置了Docker客户端。

2、拉取您想要推送的镜像。

使用以下命令从公共仓库拉取镜像:

bash 复制代码
docker pull <image_name>:<tag>

例如,如果要拉取官方的tomcat镜像,可以使用以下命令:

bash 复制代码
docker pull tomcat:9.0

3、标记镜像:使用以下命令将公共镜像标记为私有仓库的地址和端口号。

your_private_registry_address:port替换为您的私有仓库地址和端口号。

bash 复制代码
docker tag <image_name>:<tag> your_private_registry_address:port/<image_name>:<tag>

例如,如果要标记MySQL镜像并将其推送到私有仓库,可以使用以下命令:

bash 复制代码
docker tag mysql:9.0 192.168.92.107:5000/tomcat:v1

4、推送镜像到私有仓库:使用以下命令将标记的镜像推送到私有仓库中。

your_private_registry_address:port替换为您的私有仓库地址和端口号。

bash 复制代码
docker push your_private_registry_address:port/<image_name>:<tag>

例如,要将标记的MySQL镜像推送到私有仓库,可以使用以下命令:

bash 复制代码
docker push 192.168.1.100:5000/tomcat:v1

5、检查私有仓库中的镜像:

a) 在浏览器中输入私有仓库的地址和端口号(例如:http://192.168.92.107:5000/v2/_catalog),并查看镜像列表,以确保镜像已成功推送到私有仓库中。

b)curl 命令查看

[root@localhost ~]# curl -XGET 192.168.92.107:5000/v2/_catalog
{"repositories":["dev","mybuntu","test","tomcat"]}

请注意,如果您没有对私有仓库进行授权,则无法将镜像推送到私有仓库中。在这种情况下,您需要先在私有仓库中创建一个用户帐户,并获取用户名和密码,然后在Docker客户端中执行docker login命令进行身份验证。

第三方镜像市场

  1. 网易:网易的镜像服务提供Docker镜像加速,可以通过网易的镜像源来加速拉取Docker镜像。
  2. 华为云:华为云提供了Docker镜像市场服务,用户可以在华为云平台上获取Docker镜像,并且可以通过华为云的加速网络来加速拉取镜像。
  3. 阿里云:阿里云提供了一站式的容器服务,其中就包括Docker镜像市场。用户可以在阿里云平台上获取Docker镜像,并且可以利用阿里云的全球加速网络来快速拉取镜像。
  4. 腾讯云:腾讯云也提供了Docker镜像市场服务,用户可以在腾讯云平台上获取Docker镜像,并且可以利用腾讯云的加速网络来加速拉取镜像。
相关推荐
dessler12 分钟前
Linux系统-ubuntu系统安装
linux·运维·云计算
向阳121818 分钟前
Dubbo负载均衡
java·运维·负载均衡·dubbo
荒Huang1 小时前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_20131 小时前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能1 小时前
气爪在自动化装配线中是如何应用的?
运维·自动化
MonkeyKing_sunyuhua1 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林2 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€3 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘3 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
其乐无涯3 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器