Docker(六)-Dcoker仓库
仓库
一个容易混淆的概念是注册服务器(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仓库的更多相关文章
- 第四章 使用Docker镜像和仓库
第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...
- Docker镜像的仓库及底层依赖的核心技术(3)
一.docker镜像的仓库 仓库分为公共仓库和私有仓库 DockerHub的官方仓库:https://hub.docker.com DockerPool社区仓库:https://dl.dockerpo ...
- Docker Harbor私有仓库部署与管理 (超详细配图)
Docker Harbor私有仓库部署与管理 1.Harbor 介绍 2.Harbor部署 3.Harbor管理 1.Harbor 介绍: 什么是 Harbor ? Harbor 是 VMware 公 ...
- 第四章 使用Docker镜像和仓库(二)
第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...
- Docker镜像与仓库(一)
Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...
- 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面
搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...
- 使用Nexus3构建Docker私有镜像仓库
一.安装Nexus3 Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven.npm.Docker.YUM.Helm等格式数据的存储和发布:并 ...
- 【Docker】(2)---仓库、镜像、容器
[Docker](2)---仓库.镜像.容器 学习Docker,我觉得首先要了解的是仓库.镜像.容器到底是什么,他们有什么区别. 一.通俗理解 1.Docker 镜像 (images) 容器运 ...
- Python Docker 查看私有仓库镜像【转】
文章来源:python Docker 查看私有仓库镜像 pip 安装: # 首先安装epel扩展源: yum -y install epel-release # 更新完成之后,就可安装pip: yum ...
随机推荐
- Python2.7-difflib
difflib主要用于比较两个序列的不同,常见于字符串的比较,可以对差异生成报告.SequenceMatcher 主要用于找两者相似部分,以及两者不同的转换方法,而 Differ 更注重于比较两者的区 ...
- Arduino入门笔记(1):认识Arduino
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 各种网站论坛里经常看到网友DIY各种遥控小车.机器人什么的,一直很好奇,很想学习一 ...
- day 30
今日内容: 单例模式的四种方法 网络编程的介绍 单例模式: 什么是单例模式? 单例模式就是经过多次实例化,指向的是同一实例 为何要用单例模式? 可以节省内存资源 如何用单例模式? 方式一:利用绑定方法 ...
- linux中分区、格式化文件系统、挂载
以前学linux的时候,毕竟自己没搞运维,就只注重了很多命令的运用,没太在意文件系统这块.买了本linux的书,这部分看了点东西,记个笔记哈哈. 有个场景,比如说我们现在的服务器上存储不够用了,那么当 ...
- python基础——类定义(转)
一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性.如果直接使用类名修改其属性,那么将直接影响到已经实例 ...
- 2017-2018-2 20155315《网络对抗技术》Exp6 :信息搜集与漏洞扫描
实验目的 进行信息搜集的工作,为实战做准备 教程 实验内容 外围信息搜集 NMAP OpenVAS 实验步骤 (一)各种搜索技巧的应用 实战的前提是进行信息搜索.当我们想要有针对地进行操作的时候,就要 ...
- Getting Start chrome-extension demo
写一个小小的chrome扩展demo~ 准备工作 了解一下插件chrome-extension: 在应用商店里的插件基本上都是以.crx为文件后缀,该文件其实就是一个压缩包,包括插件所需要的html. ...
- 如何查看哪个进程,使用了哪个CPU
某些时候,我们需要知道,在Unix/Linux 环境中,CPU究竟消耗在了哪些进程上面. 如下是最简单的方法: ps -elF
- Nginx日常报错处理总结
在Nginx错误日志中,有大量的下列信息: Upstream timed out (110: Connection timed out) while reading response header f ...
- idea Cannot Resolve Symbol 问题解决
总结:要多根据有问题的提示来进行百度搜索,这一次我就是搜索了 idea 提示的错误信息 Cannot Resolve Symbol ,才找到的解决方案,所以说出现问题,如果不是很复杂的场景或者原因很多 ...