阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7搭建Docker私有库及删除库内镜像

459次阅读
没有评论

共计 5770 个字符,预计需要花费 15 分钟才能阅读完成。

环境准备

系统:

cat /etc/RedHat-release

CentOS Linux release 7.4.1708 (Core)

主机两台,分别是 docker 私有库服务器(IP 192.168.121.121)和用户开发机(IP 192.168.121.122),开发机从私有库服务器拉取镜像。

——————————————————————————–

1、配置软件源并安装安装 docker

两台主机安装 docker

yum install docker-ce

2、搭建私有镜像仓库

登陆私有库服务器

创建 docker 管理账户并设置密码

useradd dkuser

passwd dkuser

把账户加入 docker 组,这一步是为了可以使用普通账户管理 docker,而不用使用 sudo 命令

usermod -G docker dkuser

为账户配置 sudo 权限

visudo

添加下面一行

dkuser ALL=(ALL) NOPASSWD:ALL

切换账户

su dkuser

启动 docker 服务

sudo systemctl start docker

可以通过官方提供的 registry 镜像来搭建本地的私有仓库,所以拉取官方镜像

docker pull registry

创建存放镜像和 docker 配置文件的目录

sudo mkdir /data/docker

创建配置文件,storage 配置中的 delete=true 配置项,是为了允许删除镜像。默认的镜像是没有这个参数

sudo vi /data/docker/config.yml

version: 0.1

log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3

运行 registry 容器

docker run -d -p 5000:5000 -v /data/docker/registry:/var/lib/registry -v /data/docker/config.yml:/etc/docker/registry/config.yml –restart always –name registry registry

说明:
-d -p 5000:5000 端口映射
-v /data/docker/registry:/var/lib/registry 默认情况下,会将仓库存放于容器内的 /var/lib/registry 目录下,指定本地目录挂载到容器
–restart always 在容器退出时总是重启容器, 主要应用在生产环境
–name registry 指定容器的名称

查看容器

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
071105c54db3 registry “/entrypoint.sh /etc…” 3 minutes ago Up About a minute 0.0.0.0:5000->5000/tcp registry

3、把本地镜像上传到私有仓库
在私有库服务器上

这里以 busybox 镜像为例,因为比较小

首先把镜像下载到本地

docker pull busybox

为镜像打标签

docker tag busybox 192.168.121.121:5000/busybox

查看镜像

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.121.121:5000/busybox latest db8ee88ad75f 7 hours ago 1.22MB
busybox latest db8ee88ad75f 7 hours ago 1.22MB

编辑配置文件,添加配置是为了能够在本地上传镜像。

sudo vi /usr/lib/systemd/system/docker.service

在 ExecStart=/usr/bin/dockerd 后边添加

–insecure-registry 192.168.121.121:5000

重启 docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

推送镜像到私有库

docker push 192.168.121.121:5000/busybox
The push refers to repository [192.168.121.121:5000/busybox]
0d315111b484: Pushed
latest: digest: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649 size: 527

报错解决:

docker push 192.168.121.121:5000/busybox
The push refers to repository [192.168.121.121:5000/busybox]
Get https://192.168.121.121:5000/v2/: http: server gave HTTP response to HTTPS client

因为 Docker 从 1.3.X 之后,与 docker registry 交互默认使用的是 https,然而此处搭建的私有仓库只提供 http 服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动 docker server 时增加启动参数为默认使用 http 访问

sudo vi /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd 后边添加

–insecure-registry 192.168.121.121:5000

4、开发机从私有库载入镜像

同样的也需要添加配置

vi /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd 后边添加

–insecure-registry 192.168.121.121:5000

启动 docker 服务

systemctl start docker

从私有库载入镜像

docker pull 192.168.121.121:5000/busybox
Using default tag: latest
latest: Pulling from busybox
ee153a04d683: Pull complete
Digest: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
Status: Downloaded newer image for 192.168.121.121:5000/busybox:latest

查看镜像

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.121.121:5000/busybox latest db8ee88ad75f 7 hours ago 1.22MB

5、删除镜像
在私有库服务器上

相应的参考命令:
# 查询镜像
curl < 仓库地址 >/v2/_catalog

# 查询镜像 tag(版本)
curl < 仓库地址 >/v2/< 镜像名 >/tags/list

# 查询镜像 digest_hash
curl –header “Accept:application/vnd.docker.distribution.manifest.v2+json” -I -XGET < 仓库地址 >/v2/< 镜像名 >/manifests/<tag>

# 删除镜像 API
curl -I -X DELETE “< 仓库地址 >/v2/< 镜像名 >/manifests/< 镜像 digest_hash>”

在服务器执行下面命令
查询镜像

curl -XGET http://192.168.121.121:5000/v2/_catalog
{“repositories”:[“busybox”]}

查询镜像 tag

curl http://192.168.121.121:5000/v2/busybox/tags/list
{“name”:”busybox”,”tags”:[“latest”]}

查询镜像 digest_hash,删除命令里边要填写的 镜像 digest_hash 就是 查询结果里边 Docker-Content-Digest: 后边的内容

curl –header “Accept:application/vnd.docker.distribution.manifest.v2+json” -I -XGET http://192.168.121.121:5000/v2/busybox/manifests/latest
HTTP/1.1 200 OK
Content-Length: 527
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Docker-Content-Digest: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
Docker-Distribution-Api-Version: registry/2.0
Etag: “sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649”
X-Content-Type-Options: nosniff
Date: Fri, 19 Jul 2019 06:09:44 GMT

删除私有库镜像

curl -I -XDELETE http://192.168.121.121:5000/v2/busybox/manifests/sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Fri, 19 Jul 2019 06:10:56 GMT
Content-Length: 0

查看镜像信息可以看到镜像的标签显示为空 null

curl http://192.168.121.121:5000/v2/busybox/tags/list
{“name”:”busybox”,”tags”:null}

 这里虽然删除了,但是实际上硬盘地址还没有释放,是因为 docker 删除 p_w_picpath 只是删除的 p_w_picpath 的元数据信息。层数据并没有删除。现在进入 registry 中进行垃圾回收。

进入 registry 容器

docker exec -it 071105c54db3 /bin/sh
/ # cd /var/lib/registry/

查看镜像大小

/var/lib/registry # du -sch
756.0K .
756.0K total

执行回收命令

/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml
busybox

0 blobs marked, 3 blobs and 0 manifests eligible for deletion
blob eligible for deletion: sha256:895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/89/895ab622e92e18d6b461d671081757af7dbaa3b00e3e28e12505af7817f73649 go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry
blob eligible for deletion: sha256:db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/db/db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry
blob eligible for deletion: sha256:ee153a04d6837058642958836062f20badf39f558be3e6c7c7773ef7d8301d90
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ee/ee153a04d6837058642958836062f20badf39f558be3e6c7c7773ef7d8301d90 go.version=go1.11.2 instance.id=7c37e39d-6ad1-4139-b9d1-592a900b0902 service=registry

再次查询,发现回收资源执行成功

/var/lib/registry # du -sch
0 .
0 total

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5770字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7782950
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
Python自学26 – Cookie和Session

Python自学26 – Cookie和Session

Python 自学 26 – Cookie 和 Session 在学习 Web 开发时,Cooki...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...