构建registry镜像仓库
- 用途
- 构建步骤
- 一、拉取并运行Registry容器
- 二、验证Registry容器是否运行:
- 三、配置Docker客户端以使用私有镜像仓库--(如果是https请求可以跳过)
- 四、推送查看拉取私有镜像仓库
用途
Docker镜像仓库是存储和管理容器镜像的中心仓库。本文将向您展示如何在Linux上构建一个个人私有的Docker镜像仓库。dockerhub收费安全,registry免费但不安全,咱们都喜欢白嫖,不怕安全的推荐搭建registry!
构建步骤
一、拉取并运行Registry容器
docker pull registry ----拉取Registry镜像
此时你在查看本地镜像就多了registry
docker images ----查看本机已下载的镜像(registry:latest)
创建并运行Registry容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
注:
-itd: 这个是多个选项的组合,具体含义如下:
-i(Interactive): 保持与容器的交互式连接,使得用户可以输入命令进行交互。
-t(TTY): 分配一个伪终端(pseudo-tty),用于与容器进行交互。
-d(Detached): 将容器放入后台运行模式,该模式下容器不会占用终端。
-v /data/registry:/var/lib/registry: 这个参数用于将本地宿主机的目录/data/registry(左侧)映射到容器内的目录/var/lib/registry(右侧)。这样做可以将容器内的数据持久化并保存在宿主机,方便在容器重启后继续使用之前的数据。
-p 5000:5000: 使用此参数将容器内的端口5000映射到宿主机的端口5000,使得在宿主机上可以通过localhost:5000访问容器内运行的服务。
–restart=always: 此参数指定了容器的重启策略。always表示无论容器因何种原因退出,Docker都会自动重启容器。
–name registry: 使用此参数为容器指定名称,这里将容器命名为registry。可以通过容器名称来操作容器,例如启动、停止、删除等操作
二、验证Registry容器是否运行:
docker ps ----查看运行中的容器
如果遇到容器没有运行可以尝试一下步骤:
docker ps -a ----查看所有已经创建的容器,获取想启动容器的CONTAINER ID
然后执行docker restart (CONTAINER ID) 跟上对应的容器id即可启动该容器
三、配置Docker客户端以使用私有镜像仓库–(如果是https请求可以跳过)
不是https请求推送镜像时会报错,它会自动访问https,但我们是http
The push refers to repository [your-server-ip:5000/centos]
Get “https://your-server-ip:5000/v2/”: http: server gave HTTP response to HTTPS client
现在,我们需要配置Docker客户端以使用我们刚创建的个人私有镜像仓库。
步骤:
1、打开终端,并执行以下命令以编辑Docker的配置文件:
vi /etc/docker/daemon.json
如果文件不存在,则新建一个。
2、在打开的文件中添加以下内容,指定Registry镜像仓库的地址:
{
"insecure-registries" : ["your-server-ip:5000"]
}
将"your-server-ip"替换为部署Registry容器的Linux服务器的实际IP地址。这将告诉Docker客户端信任并使用该地址上的私有镜像仓库。
注意可以先尝试127.0.0.1,还是报错继续填真实ip
3、保存并关闭文件。然后重新加载Systemd的配置文件,重新启动Docker服务:
systemctl daemon-reload
sudo systemctl restart docker
四、推送查看拉取私有镜像仓库
本机选择一个镜像上传到仓库去
1、为这个镜像添加一个"tag"
docker tag python3.9:haili your-server-ip:5000/centos:v1
比如我给我本机镜像源python3.9:haili打一个tag为centos
2、推送python3.9镜像到私有仓库
docker push your-server-ip:5000/centos:v1
3、查看已推送的镜像
curl -X GET http://your-server-ip:5000/v2/_catalog
你想获取特定镜像库的详细信息,可以使用以下命令
curl -X GET http://your-server-ip:5000/v2/<repository-name>/tags/list
将替换为你想要查看的镜像库名称。这将返回该镜像库中可用的所有标签列表。
4、拉取仓库镜像
docker pull your-server-ip:5000/centos:v1
注意ip前面不需要加http