第五章 : 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
命令进行身份验证。
第三方镜像市场
- 网易:网易的镜像服务提供Docker镜像加速,可以通过网易的镜像源来加速拉取Docker镜像。
- 华为云:华为云提供了Docker镜像市场服务,用户可以在华为云平台上获取Docker镜像,并且可以通过华为云的加速网络来加速拉取镜像。
- 阿里云:阿里云提供了一站式的容器服务,其中就包括Docker镜像市场。用户可以在阿里云平台上获取Docker镜像,并且可以利用阿里云的全球加速网络来快速拉取镜像。
- 腾讯云:腾讯云也提供了Docker镜像市场服务,用户可以在腾讯云平台上获取Docker镜像,并且可以利用腾讯云的加速网络来加速拉取镜像。