仓库


一个容易混淆的概念是注册服务器(Registry)。 实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说, 仓库可以被认为是一个具体的项目或目录。例如对于仓库地址registry.hub.docker.com/ubuntu 来说,registry.hub.docker.com是注册服务器地址,ubuntu是仓库名。大部分时候,并不需要严格区分这两者的概念。

Docker Hub

目前Docker官方维护了一个公共仓库 Docker Hub:https://hub.docker.com

我们可以在Docker Hub上完成注册。这样就可以使用Docker Hub 来托管我们的镜像了。

通过docker search命令来查找官方仓库中的镜像,并利用docker pull 命令来将它下载到本地。

$ sudo docker search ubuntu

使用国内镜像

参考地址:https://www.docker-cn.com/registry-mirror

临时性的使用:

$ sudo docker pull registry.docker-cn.com/library/ubuntu:16.04

永久性的使用:

修改 /etc/docker/daemon.json文件(没有的话可以手动创建,需要通过root用户操作)并添加上 registry-mirrors 键值。

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存后重启Docker服务以使配置生效。

$ sudo service docker restart

Docker私有仓库搭建


环境准备

环境:两个装有Docker的虚拟机

机器名 ip 功能
docker-registry 192.168.119.1 docker私有仓库服务器
docker-app 192.168.119.2 运行docker服务的普通服务器
安装私有仓库

登录docker-registry机器(推荐使用SecureCRT);

#创建数据存储的文件夹 ,将容器的/tem/registry目录映射到/docker/registry
$ mkdir /docker/registry

执行以下命令,会启动一个registry容器,该容器用于提供私有仓库的服务:
$ sudo docker run -d -p 5000:5000 --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次。

测试


接下来我们就要操作把一个本地镜像push到私有仓库中。首先在153机器下pull一个比较小的镜像来测试(此处使用的是busybox)。

docker pull busybox

接下来修改一下该镜像的tag。

docker tag busybox 192.168.119.1:5000/busybox

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

docker push 192.168.119.1:5000/busybox

可以看到 push 失败:

 Error: Invalid registry endpoint https://192.168.119.1:5000/v1/: Get https://192.168.119.1:5000/v1/_ping: dial tcp 192.168.119.1:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.119.1: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.119.1:5000/ca.crt 

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

第一种方法:

vi /etc/default/docker

修改DOCKER_OPTS参数

DOCKER_OPTS="-H 0.0.0.0:2375 --insecure-registry 192.168.119.1:5000"

第二种方法:

vi /etc/docker/daemon.json

将下面的代码放进去保存并退出。

"insecure-registries":["192.168.119.1:5000"]

最终如下所示:

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

重新启动docker:

sudo service restart docker

重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。

docker push 192.168.119.1:5000/busybox

接下来我们从私有仓库中pull下来该镜像。

sudo docker pull 192.168.119.1:5000/busybox

查看镜像

# curl -XGET http://registry:5000/v2/_catalog
# curl -XGET http://registry:5000/v2/image_name/tags/list

Docker(六)-Dcoker仓库的更多相关文章

  1. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  2. Docker镜像的仓库及底层依赖的核心技术(3)

    一.docker镜像的仓库 仓库分为公共仓库和私有仓库 DockerHub的官方仓库:https://hub.docker.com DockerPool社区仓库:https://dl.dockerpo ...

  3. Docker Harbor私有仓库部署与管理 (超详细配图)

    Docker Harbor私有仓库部署与管理 1.Harbor 介绍 2.Harbor部署 3.Harbor管理 1.Harbor 介绍: 什么是 Harbor ? Harbor 是 VMware 公 ...

  4. 第四章 使用Docker镜像和仓库(二)

    第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...

  5. Docker镜像与仓库(一)

    Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...

  6. 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面

    搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...

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

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

  8. 【Docker】(2)---仓库、镜像、容器

    [Docker](2)---仓库.镜像.容器     学习Docker,我觉得首先要了解的是仓库.镜像.容器到底是什么,他们有什么区别. 一.通俗理解 1.Docker 镜像 (images) 容器运 ...

  9. Python Docker 查看私有仓库镜像【转】

    文章来源:python Docker 查看私有仓库镜像 pip 安装: # 首先安装epel扩展源: yum -y install epel-release # 更新完成之后,就可安装pip: yum ...

随机推荐

  1. 安装 Autoconf, Automake & Libtool

    今天在使用sudo apt-get install命令安装autoconf和automake时,出现了问题,说是不能sudo apt-get install安装这些软件似乎不是最新的.由此,我通过搜索 ...

  2. VC++定义全局变量及extern用法

    基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern有两 ...

  3. windows10+Python3.6+Anaconda3+tensorflow1.10.0配置和安装

    windows10+Python3.6+Anaconda3+tensorflow1.10.0# Anaconda3安装自行下载安装,之后dos或Anaconda Prompt终端查看Anaconda3 ...

  4. flask 蓝本(blueprint)

    蓝本(blueprint) 一.基本概念: 将视图方法模块化,既当大量的视图函数放在一个文件中,很明显是不合适,最好的方案是根据功能将路由合理的划分到不同的文件中:而蓝本就是为了解决这个问题而出现的. ...

  5. Android 在测试阶段当出现多个测试服务器地址时打包的小技巧

    前提:服务端没有做特殊处理 在开发android网络客户端项目时,不可避免的会用到“测试服务器地址”和“云端服务器地址”等.(有时可能会有多个) 这时在打包给测试那帮哥们时,你就需要一个服务器地址打上 ...

  6. 20155209林虹宇 Exp6 信息搜集与漏洞扫描

    Exp6 信息搜集与漏洞扫描 1.信息收集 1.1通过DNS和IP挖掘目标网站的信息 whois查询 进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务 ...

  7. 20155330 《网络对抗》 Exp2 后门原理与实践

    20155330 <网络对抗> 实验二 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 在网站上下载非官方软件,所下载的软件中携带伪装过的后门程序. 例举你 ...

  8. iterms 快捷键

    标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:comma ...

  9. C# event线程安全

    突然想到有关C#中使用event特性时关于线程安全的问题,以前虽然有遵从“复制引用+null判断”的模式(盲目地),但没有深入了解和思考. 为之查询了资料和实验,对此有了进一步的理解. 一般event ...

  10. 论FPGA建模,与面向对象编程的相似性

    很久没有写FPGA方面的博客了,因为最近一直在弄一个绘图的上位机. 我觉得自己建模思想还不错,但是面向对象思维总是晕的.突然有一天发现,两者居然有这么对共同之处,完全可以相互启发啊.就简单聊下. 1. ...