8 docker仓库

Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的地方。

8.1 docker hub

1、打开https://hub.docker.com/
2、注册账号:略
3、创建仓库(Create Repository):略
4、设置镜像标签
docker tag local‐image:tagname new‐repo:tagname(设置tag)
eg:docker tag hello‐world:latest 108001509033/test‐hello‐world:v1
docker tag hello-world:latest eadela/hello-world:v1
5、登录docker hub
docker login(回车,输入账号以及密码)
6、推送镜像
docker push new‐repo:tagname
eg:docker push 108001509033/test‐hello‐world:v1
docker push eadela/hello-world:v1
Error response from daemon: manifest for hello-world:v1 not found: manifest unknown: manifest unknown
加登陆账号昵称
Error: No such image: eadela_docker_test/hello-world
加标签
denied: requested access to the resource is denied
在镜像前加登陆名

8.2 阿里云

略:参考官方文档。

步骤:
1、创建阿里云账号
2、创建命名空间
3、创建镜像仓库
4、操作指南
$ sudo docker login ‐‐username=[账号名称] registry.cn‐
hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn‐
hangzhou.aliyuncs.com/360buy/portal:[镜像版本号]
$ sudo docker push registry.cn‐hangzhou.aliyuncs.com/360buy/portal:[镜像版
本号]

8.3 搭建私有仓库

8.3.1 构建私有仓库

  1、启动Docker Registry,使用Docker官方提供的Registry镜像就可以搭建本地私有镜像
仓库,具体指令如下。
$ docker run ‐d \
  ‐p 5000:5000 \
  ‐‐restart=always \
  ‐‐name registry \
  ‐v /mnt/registry:/var/lib/registry \
  registry:2
指令参数说明:
‐d:表示在后台运行该容器;
‐p 5000:5000:表示将私有镜像仓库容器内部默认暴露的5000端口映射到宿主机的5000端

‐‐restart=always:表示容器启动后自动启动本地私有镜像仓库
‐‐name registry:表示为生成的容器命名为registry
‐v /mnt/registry:/var/lib/registry:表示将容器内的默认存储位
置/var/lib/registry中的数据挂载到宿主机的/mnt/registry目录下,这样当容器销毁
后,在容器中/var/lib/registry目录下的数据会自动备份到宿主机指定目录
小提示:
Docker Registry目前有v1和v2两个版本,v2版本并不是v1版本的简单升级,而是在很多
功能上都有了改进和优化。v1版本使用的是Python开发的,而v2版本是用go语言开发的;
v1版本本地镜像仓库容器中数据默认挂载点是/tmp/registry,而v2版本的本地镜像仓库容
器中数据默认挂载点是/var/lib/registry
2、重命名镜像,之前推送镜像时,都是默认推送到远程镜像仓库,而本次是将指定镜像推送
到本地私有镜像仓库。由于推送到本地私有镜像仓库的镜像名必须符合“仓库IP:端口
号/repository”的形式,因此需要按照要求修改镜像名称,具体操作指令如下。
$ docker tag hello‐world:latest localhost:5000/myhellodocker
3、推送镜像,本地私有镜像仓库搭建并启动完成,同时要推送的镜像也已经准备就绪后,就
可以将指定镜像推送到本地私有镜像仓库了,具体操作指令如下
$ docker push localhost:5000/myhellodocker
4、查看本地仓库镜像
http://localhost:5000/v2/myhellodocker/tags/list  (注意:使用该地址时注意镜
像名称)
http://192.168.9.23:5000/v2/myhellodocker/tags/list
由于做了目录挂载,因此可以在本地的该目录下查看:
/mnt/registry/docker/registry/v2/repositories
推送:不需要(不安全)

8.3.2 配置私有仓库认证

 一、配置私有仓库认证
1、查看Docker Registry私有仓库搭建所在服务器地址:ifconfig
例如:服务器地址为:192.168.200.141
2、生成自签名证书(在home目录下执行上述指令后)
要确保Docker Registry本地镜像仓库的安全性,还需要一个安全认证证书,来保证其他
Docker机器不能随意访问该机器上的Docker Registry本地镜像仓库,所以需要在搭建
Docker Registry本地镜像仓库的Docker主机上先生成自签名证书(如果已购买证书就无需
生成),具体操作指令如下。
$ mkdir registry && cd registry && mkdir certs && cd certs
$ openssl req ‐x509 ‐days 3650 ‐subj '/CN=192.168.200.162:5000/' \
    ‐nodes ‐newkey rsa:2048 ‐keyout domain.key ‐out domain.crt
指令参数说明:
‐x509:x509是一个自签发证书的格式
‐days 3650:表示证书有效期
192.168.197.141:5000:表示具体部署Docker Registry本地镜像仓库的地址和端口
rsa:2048:是证书算法长度
domain.key和domain.crt:就是生成的证书文件
3、生成用户名和密码
在Docker Registry本地镜像仓库所在的Docker主机上生成自签名证书后,为了确保
Docker机器与该Docker Registry本地镜像仓库的交互,还需要生成一个连接认证的用户名
和密码,使其他Docker用户只有通过用户名和密码登录后才允许连接到Docker Registry本
地镜像仓库
$ cd .. && mkdir auth
$ docker run ‐‐entrypoint htpasswd registry:2 ‐Bbn ruanwen 123456 >
auth/htpasswd
4、启动Docker Registry本地镜像仓库服务(将之前创建的容器删除)
$ docker run ‐d \
  ‐p 5000:5000 \
  ‐‐restart=always \
  ‐‐name registry \
  ‐v /mnt/registry:/var/lib/registry \
  ‐v `pwd`/auth:/auth \
  ‐e "REGISTRY_AUTH=htpasswd" \
  ‐e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  ‐e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  ‐v `pwd`/certs:/certs \
    ‐e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  ‐e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2
5、配置Docker Registry访问接口
完成Docker Registry本地镜像仓库服务启动后,还需要在搭建了Docker Registry本地镜
像仓库所在的Docker主机上配置供其他Docker机器访问的接口,具体指令如下:
$ sudo mkdir ‐p /etc/docker/certs.d/192.168.200.162:5000
$ sudo cp certs/domain.crt /etc/docker/certs.d/192.168.200.162:5000
6、Docker Registry私有仓库使用登记
在Docker机器终端使用sudo vim /etc/docker/daemon.json命令编辑daemon.json文
件,在该文件中添加如下内容
{"insecure‐registries":["192.168.200.162:5000"]}
7、重启并加载docker配置文件
$ sudo /etc/init.d/docker restart
二、验证测试
1、装备镜像
$ docker tag hello‐world:latest 192.168.200.162:5000/myhelloworld
2、推送镜像
$ docker push 192.168.200.141:5000/myhelloworld
送过程中出现错误,信息提示为:no basic auth credentials(即没有通过身份验
证),所以无法进行推送,这也就说明身份验证的配置有效。要想成功推送,需要先登录成
功后再推送
3、登录Docker Registry镜像仓库
$ docker login 192.168.200.162:5000
4、再次推送
$ docker push 192.168.200.139:5000/myhelloworld
5、结果验证
由于做了目录挂载,因此可以在本地的该目录下查看:
/mnt/registry/docker/registry/v2/repositories
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /mnt/registry:/var/lib/registry \
-v `pwd` /auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v `pwd` /certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
docker: invalid reference format.
See 'docker run --help'.
网上方法:
1 docker镜像的名字中不能包含大写字母,改成小写
2 docker run –p 8080:80 –d nginx 符号错误 “-” 其实为"-"
  没有英汉互译结果
  请尝试网页搜索

docker--docker仓库的更多相关文章

  1. 创建docker私人仓库

    关于创建docker私人仓库 1.1.           安装步骤 1.1.1.            直接从公共库上面下载register镜像在本地执行 1.1.1.1.             ...

  2. 一步步搭建docker私有仓库并从私有仓库中下载镜像

    一步步搭建docker私有仓库 #下载镜像 docker pull registry#查看镜像 docker images #运行私有仓库,指定端口和数据卷 docker run -d -p : -v ...

  3. 搭建docker私有仓库,建立k8s集群

    服务器IP角色分布 192.168.5.2 etcd server 192.168.5.2 kubernetes master 192.168.5.3 kubernetes node 192.168. ...

  4. docker 私有仓库镜像的存储位置

    docker 私有仓库的镜像 是存储在5739360d1030 registry "docker-registry" 3 days ago Up 28 hours 0.0.0.0: ...

  5. docker 镜像仓库 Harbor 部署 以及 跨数据复制

    docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...

  6. 在docker私有仓库如何查看有哪些镜像?

    搭建了docker私有仓库,上传了一些镜像,时间长了就会忘了有哪些镜像,在网上查了,有大佬是通过脚本查看的,多厉害! #!/usr/bin/env python#-*- coding:utf-8 -* ...

  7. 转载:教你分分钟搞定Docker私有仓库Registry

    一.什么是Docker私有仓库Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候我们的服务器无法 ...

  8. <二>企业级开源仓库nexus3实战应用–使用nexus3配置docker私有仓库

    1,安装nexus3. 这个地方略了,安装部署可以参考:nexus3安装配置. 2,配置走起. 1,创建blob存储. 登陆之后,先创建一个用于存储镜像的空间. 定义一个name,下边的内容会自动补全 ...

  9. Docker 私有仓库建立(加密和用户验证)

    (一)生成证书1.mkdir /certs2.cd /certs 3.生成自签名证书 sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days ...

  10. 搭建docker私有仓库(https)

    1.修改openssl.cnf,支持IP地址方式,HTTPS访问在Redhat7或者Centos系统中,文件所在位置是/etc/pki/tls/openssl.cnf.在其中的[ v3_ca]部分,添 ...

随机推荐

  1. js前台页面显示中文,后台存对应的value值实现

    field: 'rightType', title: '权益类型', //width: 100, align: 'left', valign: 'top', sortable: true, forma ...

  2. centos安装gitlab成果

    centos安装gitlab成果 开始之前 在开始之前请先查看官方的刚需文档: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install ...

  3. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  4. hive中groupby和distinct区别以及性能比较

    Hive去重统计 先说核心: 都会在map阶段count,但reduce阶段,distinct只有一个, group by 可以有多个进行并行聚合,所以group by会快. 经常在公司还能看到.很多 ...

  5. hadoop下生成echarts关系图

    数据 O700 O2833 O700 O331 O700 O3425 O700 O350 O700 O3516 O700 O3826 读取文件类 public class FileReadFromHd ...

  6. formant

    1.函数功能将一个数值进行格式化显示. 2. 如果参数format_spec未提供,则和调用str(value)效果相同,转换成字符串格式化. >>> format(3.141593 ...

  7. Node.js的url模块简介

    什么是URL URL是Uniform Location Resource的缩写,翻译为“统一资源定位符”,也就是描述资源位置的固定表示方法.被URL描述的资源可以位于互联网上,也可以位于本地. URL ...

  8. vue-router中$route 和 $router

    1.1 $route 表示(当前路由信息对象) 表示当前激活的路由的状态信息,包含了当前 URL 解析得到的信息,还有 URL 匹配到的 route records(路由记录).路由信息对象:即$ro ...

  9. Kotlin使用率达35%,Java要退位了?

    在今年的Google I/O大会上,关于Kotlin,Google只说了只言片语: 在过去一年里,有35%的专业Android开发者在使用Kotlin,其中95%的开发者都对Kotlin非常满意. 之 ...

  10. 关于:基于http协议大文件断点续传上传至web服务器

    关键部分 前端用file.slice()分块 前端用FileReader获取每一分块的md5值 后端用MultipartFile接受分块文件 后端用FileOutputStream拼装分块文件 话不多 ...