环境:centos7,dockere版本:18.09.0,镜像仓库:v2

  docker-registry:192.168.137.101   docker私有仓库服务器

  docker-app: 192.168.137.102   运行docker的普通机器

  

一、安装私有仓储

  1. 登录docker私有仓库服务器
  2. 创建私有仓库存储的文件夹,make -p /docker/registry
  3. 执行以下命令,会启动一个registry容器,该容器用于提供私有仓库的服务
docker run -d -p : --name registry-ser --restart=always 
--privileged=true -v /docker/registry:/var/lib/registry registry
  • --restart=always 表示自动启动容器
  • -v <宿主机目录>:<容器目录> 将宿主机的目录映射到容器上
  • --privileged=true 给容器加权限,这样上传就不会因为目录权限出错
  • /var/lib/registry 这个目录是docker私有仓库,镜像的存储目录

--restart的参数说明 
# always:无论容器的退出代码是什么,Docker都会自动重启该容器。 
# on-failure:只有当容器的退出代码为非0值的时候才会自动重启。
#另外,该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker#会尝试自动重启该容器,最多5次。

二、测试

1.接下来,把本地的hello-world镜像push到私有仓储。

docker pull hello-world

2.接下来修改该镜像的tag。

docker tag hello-world 192.168.137.101:5000/hello-world

3.接下来把打了tag的镜像上传到私有仓库。

docker push 192.168.137.101:5000/hello-world

很不幸,这里报错了。因为从docker1.3.2版本开始,使用registry时,必须使用TLS保证其安全。

1月  :: localhost.localdomain dockerd[]: time="2019-01-05T22:32:38.578520907+08:00" 
level=error msg="Handler for GET /v1.39/images/search returned error: invalid registry endpoint
https://192.168.137.101:5000/v1/: Get https://192.168.137.101:5000/v1/_ping: http: server gave
HTTP response to HTTPS client. If this private registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry 192.168.137.101:5000` to the daemon's arguments. In the case of HTTPS,
if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate
at /etc/docker/certs.d/192.168.137.101:5000/ca.crt"

  最简单的办法是,在需要连接该私有仓库的所有客户端docker宿主机上,修改daemon.json配置文件,增加insecure-registry参数。

[root@localhost ~]# vi /etc/docker/daemon.json 

{
"registry-mirrors": ["https://yvaq2qqy.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.137.101:5000"]
}

  或者直接在 /lib/systemd/system/docker.service 这个启动文件里加上 --insecure-registry 192.168.137.101:5000

[root@localhost system]# cat -n /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service
Wants=network-online.target [Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H unix:// \
--insecure-registry 192.168.137.101: #加上这一句
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=
RestartSec=
Restart=always

  之后重启docker服务:systemctl restart docker

  之后再push,发现成功了。

[root@localhost system]# docker push 192.168.137.101:/hello-world
The push refers to repository [192.168.137.101:/hello-world]
af0b15c8625b: Pushed
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size:

三、管理私有镜像

  在Private Registry 2中查看或检索Repository或images,将不能用docker search。

  但通过v2版本的API,我们可以实现相同目的,必须按照IP:port/v2/_catalog格式:

  curl http://192.168.137.101:5000/v2/_catalog 、curl http://192.168.137.101:5000/v2/hello-world/tags/list

  查看私有仓库的信息。

[root@localhost system]# curl http://192.168.137.101:5000/v2/_catalog
{"repositories":["hello-world"]} [root@localhost system]# curl http://192.168.137.101:5000/v2/hello-world/tags/list
{"name":"hello-world","tags":["latest"]} #从私有仓储里拉取hello-world镜像
[root@localhost system]# docker pull 192.168.137.101:5000/hello-world
Using default tag: latest
latest: Pulling from hello-world
Digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
Status: Image is up to date for 192.168.137.101:5000/hello-world:latest
 

docker私有镜像仓库搭建的更多相关文章

  1. 基于 registry 搭建 Docker 私有镜像仓库

    今天主要介绍使用 registry 来搭建 Docker私有镜像仓库,方便在公司内部项目中使用,registry 也是 Docker 官方提供的一个镜像,操作也很简单. dockerhub: http ...

  2. 6.云原生之Docker容器Registry私有镜像仓库搭建实践

    转载自:https://www.bilibili.com/read/cv15219863/?from=readlist #1.下载registry仓库并设置数据存放的目录(并生成认证账号密码) doc ...

  3. Docker 私有镜像仓库的搭建及认证

    DockerHub 为我们提供了很多官方镜像和个人上传的镜像,我们可以下载机构或个人提供的镜像,也可以上传我们自己的本地镜像,但缺点是: 由于网络的原因,从 DockerHub 下载和上传镜像速度可能 ...

  4. 使用Nexus3构建Docker私有镜像仓库

    一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...

  5. nexus docker 私有镜像处理

    新版本的nexus 可以进行docker 镜像的存储处理 配置私有镜像(host 模式) 修改docker 非安全镜像处理 { "registry-mirrors": [" ...

  6. VMware harbor && minio 搭建企业docker私有镜像以及需要注意的问题

    1. docker harbor  配置      建议使用在线安装的模式(离线包太大了)    首先需要安装docker-compose .docker .mino (具体安装可以参考官网后者我的博 ...

  7. 容器技术之Docker私有镜像仓库docker-distribution

    在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...

  8. 容器技术之Docker私有镜像仓库harbor

    前文我们聊到了docker的私有镜像仓库docker-distribution的搭建和简单的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13058338 ...

  9. 【Linux】【Services】【SaaS】Docker+kubernetes(7. 安装Docker私有镜像仓库)

    1. 简介 1.1. 自己做个私有镜像,方便上传和下载,我也在docker官网注册了一个账号,做好的镜像可以传上去 1.2. Redhat自带私有镜像的功能,需要安装包,这是howto: https: ...

随机推荐

  1. MySQL/MariaDB系列文章目录

    以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接. 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情. ...

  2. 字符串string 、byte[]、MemoryStream、Base64String的相互转换

    1.字符串转比特数组 (1)byte[] bt=System.Text.Encoding.Default.GetBytes("字符串"); (2)byte[] bt=Convert ...

  3. Java开发笔记(五十二)对象的类型检查

    前面介绍了类的多态性,来自于鸡类的实例chicken,既能用来表达公鸡实例,也能用来表达母鸡实例.可是这导致了一个问题,假如在call方法内部需要手工判断输入参数属于公鸡实例还是母鸡实例,那该如何是好 ...

  4. Java学习笔记之——集合

    集合是类,用来存储多个数据,有属性.方法 集合是一个可变数组,保存相同元素并且长度可变 1. 体系 (1)Collection:存储一个一个的值 Iterable: Iterable<T> ...

  5. PHP基础:MYSQL数据库操作

    1.连接到数据库: · 面向对象的方法: $db = new mysqli('hostname', 'username', 'password', 'dbname'); · 面向过程的方法: $db ...

  6. Django学习之三:django-admin 和 项目manage.py程序

    目录 Django django-admin 和 项目manage.py程序 它俩是什么? 命令程序用法 常用命令 Django django-admin 和 项目manage.py程序 它俩是什么? ...

  7. 理解sort()函数的排序原理

    看了很多关于sort()函数的定义和解释还是不太清楚,尤其是初学者很容易看懵,这里讲讲自己是如何理解的. 首先,要理解sort()内部是利用递归进行冒泡排序的: 例如: var arr = [1, 5 ...

  8. sublime实现背景透明化

    预览 老司机们就不要吐槽背景图了 实现方法 首先下载插件,直接打包下载zip即可 地址:https://github.com/vhanla/SublimeTextTrans 下载完成后解压到packa ...

  9. SAP QA32 做使用决策系统报错:分类数据的不一致性=>交易终止

    SAP QA32 做使用决策系统报错:分类数据的不一致性=>交易终止 QA32,对如下检验批做处理,系统报错, 试图使用MSC3N去显示这个批次主数据,同样报错, 原因在于批次的分类数据产生后, ...

  10. 解决一个Ubuntu中编译NEON优化的OpenCV的错误

    在Ubuntu 16中编译开启NEON优化的Opencv时,遇到libpng编译是使用汇编代码的错误,完整错误见文章末尾.通过查询发现解决方案是安装跨平台编译器,安装代码如下: sudo apt-ge ...