为什么80%的码农都做不了架构师?>>>   

安装之前需要docker环境,安装docker环境参考:http://www.runoob.com/docker/centos-docker-install.html

10.138.60.136:5000是私有仓库的地址

1、私有仓库也是通过docker来实现的,所以需要拉取一个仓库镜像

docker pull registry

2、将该镜像运行起来成为一个容器,执行下面命令,复制命令粘贴一直报错,得手工敲进去才行。

docker run -d -p 5000:5000 -v /home/lwt/registry:/var/lib/registry --restart=always --privileged=true registry

-p 5000:5000    端口映射,前面是主机的端口号,后面是容器的端口号

-d    指明是后台运行容器

-v /home/lwt/registry:/var/lib/registry registry    将仓库存放于容器内的/tmp/registry目录下,将本地目录/home/hzq/registry挂载到容器,可以防止容器意外停止后镜像的丢失。

--restart=always    在容器退出时总是重启容器,主要应用在生产环境

--privileged=true    在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误:OSError: [Errno 13] Permission denied或者(Received unexpected HTTP status: 500 Internal Server Error)错误

到这里仓库就搭建完成了,接下来就打包一个镜像搞上去看看吧。

首先给这个镜像添加一个带有私有仓库IP的TAG,这样后面才能成功推送到私有仓库,我服务器上就有一个叫dockertest的镜像文件。

所以先执行下面命令给这个镜像打上标记,我这里都没有加版本号,默认就是latest,如果是生产环境最好打上版本号,进行回退版本也会很方便,我这里都没有加版本号,版本号格式为10.138.60.136:5000/dockertest:1.0

docker tag 044ddfc1fe00 10.138.60.136:5000/dockertest

然后在将这个镜像推送到搭建的私有仓库去,然后你会发现出来一个问题。

docker push 10.138.60.136:5000/dockertest

错误信息:Get https://10.138.60.136:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这个问题需要你在/etc/docker/daemon.json文件中添加一段配置信息,注意,注意,注意,因为之前配置过镜像加速节点,格式需要注意,地一个图片也就是我一开始写的,是错误的,需要写在一起。第二张图片的格式。

{ "insecure-registries":["10.138.60.136:5000"] }

然后重新启动下

systemctl daemon-reload

systemctl restart docker

然后重新push,你会发现成功了。

然后浏览器打开仓库:http://10.138.60.136:5000/v2/_catalog,完工。

来练习下从私有仓库拉取镜像吧,首先将我原本打标记的镜像删除,docker rmi 镜像id,然后你会发现报错。

Error response from daemon: conflict: unable to delete 044ddfc1fe00 (must be forced) - image is referenced in multiple repositories

意思是说,镜像有其余引用,这个时候你会发现,你打标签的镜像的ID和你原始的镜像ID是相同的。

所以你删除的其实是原始镜像,所以出现这个问题,这个时候我们根据镜像名来删除即可。

拉取私有仓库镜像很简单:docker pull 10.138.60.136:5000/dockertest

接下来删除私有仓库的镜像笔记

首先查看仓库中的景象已经tag(其实就是版本),在浏览器输入下面的地址,我的镜像就叫dockertest

http://10.138.60.136:5000/v2/dockertest/tags/list

删除仓库私有镜像需要先将配置文件调整一下,启用删除功能。

首先进入私有仓库的容器内部:docker exec -it c8aa1a12db2c /bin/sh

然后查看仓库环境的配置文件:cat /etc/docker/registry/config.yml

然后添加一个可以进行删除的节点:sed -i '/storage:/a\ delete:' /etc/docker/registry/config.yml

添加完成,我们在看看配置文件成什么样子了,多了个delete标签,但是没有值。

然后我们给这个标签添加一个值:sed -i '/delete:/a\ enabled: true' /etc/docker/registry/config.yml

好,到这里配置就算是完成了,然后退出容器重新启动下

docker restart c8aa1a12db2c

想要删除,需要一个digest的东西,但是这个东西需要添加一个http请求头Accept:application/vnd.docker.distribution.manifest.v2+json,所以命令如下,其中Docker-Content-Digest就是需要的内容。

curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET 10.138.60.136:5000/v2/dockertest/manifests/latest

然后我们开始进行删除操作

curl -XDELETE 10.138.60.136:5000/v2/dockertest/manifests/sha256:9cfeb6314649807b2230bfb5db72e6efec8be5505fb828070520849e12ed6f46

然后再去看就会发现没有了。

看似已经删除了,其实硬盘地址并没有释放。是因为docker删除image只是删除的image的元数据信息。层数据并没有删除。现在进入registry中进行垃圾回收。

进入容器:docker exec -it c8aa1a12db2c /bin/sh

切换到镜像目录:cd /var/lib/registry

查看占用空间:du -sch

启动垃圾回收:registry garbage-collect /etc/docker/registry/config.yml

查看占用空间:du -sch

第二次运行du -sch你会发现空间少了很多。

但是http://10.138.60.136:5000/v2/_catalog看这个还是会有这个东西,需要手工把这个东西给删除掉即可,但是因为挂载在宿主机上,所以可以直接删除宿主机即可,然后再看就发现这个东西已经没有了。

转载于:https://my.oschina.net/uwith/blog/1942457

docker搭建私有仓库笔记相关推荐

  1. Windows系统用Docker搭建私有仓库

    Windows系统用Docker搭建私有仓库 一.安装Docker Desktop 二.创建私有仓库 三.验证私有仓库是否创建成功 一.安装Docker Desktop 1.1.可以在软件管家安装这个 ...

  2. docker搭建私有仓库

    紧接上一篇镜像发布到官方之后,我们来搭建我们自己的私有仓库,比较,如果真的要在生产环境使用的话,这是必须的. 首先,我们来准备一下搭建私有仓库所需要的信息. #先吧私有仓库down下来,这需要一点时间 ...

  3. docker 搭建私有仓库registry (多用户)

    Docker Registry v2 + Token Auth Server (Registry v2 认证) 环境:虚拟机中的centos 1,创建目录(基于/data/目录下) auth_serv ...

  4. docker 搭建私有仓库

    https://www.cnblogs.com/lasdaybg/p/9768445.html

  5. Docker容器私有仓库——Harbor私有仓库的搭建

    Docker容器私有仓库--Harbor私有仓库的搭建 一.Harbor介绍 1.Harbor概念 2.Harbor的核心组件 3.Harbor的优点 二.Harbor搭建的环境准备 1.当前Harb ...

  6. Docker入门之四搭建私有仓库

    前面学习了下镜像和容器,今天来学习下仓库,来搭建本地私有仓库.当然可以使用远程的共有的仓库,但在企业中有的还是放在本地,所以需要搭建私有仓库. 一.搭建仓库 可以在容器中run一个仓库镜像. dock ...

  7. 【Docker】Registry搭建私有仓库、证书认证、用户登录认证

    一.Docker Registry工作原理 02_Docker Registry角色 Docker Registry有三个角色,分别是index.registry和registry client. i ...

  8. Docker 容器仓库之搭建私有仓库、hub仓库

    一.什么是仓库 Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像. Docker运行中使用的默认仓库 ...

  9. Docker harbor私有仓库部署与管理

    Docker harbor私有仓库部署与管理. 前言 一.什么是Harbor 二.Harbor的特性 三.Harbor的构成 四.Harbor部署 4.1 环境准备 4.2 部署Docker Comp ...

最新文章

  1. S5PV210开发 -- 通信
  2. java 类似xamarin_有人有基准(代码和结果)比较在Xamarin C#和Java编写的Android应用程序的性能吗?...
  3. 信息学奥赛一本通 2031:【例4.17】四位完全平方数
  4. 关于某系统的全面质量属性战术
  5. 2019年第二届全国大学生大数据技能竞赛通知
  6. R语言爬虫系列(1)XML抓取表格数据
  7. pytorch实现attention_Self-Attention手动推导及实现
  8. docker运行jenkins挂掉_docker搭建jenkins
  9. java google翻译api接口_java 免费调用google 谷歌翻译api
  10. 摄像机标定学习笔记(1)
  11. Android 常用颜色值及半透明效果配置
  12. vscode 是干什么用的_vscode是干嘛用的
  13. 吴伯凡-认知方法论-如何犯一个“正确”的错误
  14. 求2+22+222+2222+22222
  15. SFP光模块相关知识
  16. 白话 贝叶斯公式_[白话解析] 深入浅出朴素贝叶斯模型原理及应用
  17. Win10 解决CSDN、阿里云国内站、小米商城国内站等国内网站打不开的问题(超详细教程)
  18. presenting view controller
  19. 企业工商信息查询第三方软件/API查询原理分析
  20. 亮剑精神---程序人生路

热门文章

  1. Python将字符串转换为列表
  2. jdbc 数据源_Java数据源,JDBC数据源示例
  3. Hibernate本机SQL查询示例
  4. android共享元素动画_Android共享元素过渡动画
  5. c ++向量库_C ++中的2D向量–实用指南2D向量
  6. C++高级教程之多线程
  7. 开课吧:什么是包?如何定义包?
  8. ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
  9. Mybatis-no getter for property named 'col_name' in 'class com.xxx.onebean'
  10. IPv6协议漏洞将威胁核心路由器安全