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镜像,并且可以利用腾讯云的加速网络来加速拉取镜像。
相关推荐
..Move...1 小时前
Docker镜像制作
运维·docker·容器
码龄3年 审核中6 小时前
说说SSH的端口转发
大数据·运维·ssh
盛世隐者6 小时前
【Linux】定制Linux系统
linux·运维·服务器
行思理7 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
..Move...8 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
Lxt.星翊9 小时前
MySQL(安装和卸载、数据库存储原理图)
linux·运维·windows
苹果醋39 小时前
JAVA面试汇总(二)多线程(五)
运维·vue.js·spring boot·nginx·课程设计
JustNow_Man10 小时前
Cline中模型识别任务与clinerules相关性的实现逻辑
linux·运维·ubuntu
小白银子10 小时前
零基础从头教学Linux(Day 56)
linux·运维·python
你想考研啊10 小时前
Linux下搭建Activemq的Master-Slave(共享文件模式)
linux·运维·activemq