Docker学习(五): 仓库与数据管理
特别声明:
博文主要是学习过程中的知识整理,以便之后的查阅回顾。部分内容来源于网络(如有摘录未标注请指出)。内容如有差错,也欢迎指正!
=============系列文章=============
3. Docker学习(三): Dockerfile指令介绍
=================================
一、公有仓库操作
登录:docker login命令输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
搜索:docker search查找官方仓库中的镜像
下载:docker pull 下载镜像到本地
推送:docker push推送镜像到Docker Hub
二、私有仓库
docker-regiestry是官方提供的工具,可以用于构建私有的镜像仓库。
安装运行:官方registry获取镜像运行
示例:docker run -d -p 5000:5000 registry
默认情况下,仓库会被创建在容器的/var/lib/registry(v1中是/tmp/registry), 可以通过-v参数将镜像文件存放在本地的指定路径。
标记镜像:docker tag IMAGE[:TAG] [REGISTRYHOST/] [USERNAME/]NAME[:TAG],标记后可以push到私有仓库,让其他人下载。
三、仓库配置文件config_sample.yml
common:基础配置
local:存储数据到本地文件系统
s3:存储数据到AWS S3中
dev:使用local模板的基本配置
test:单元测试使用
prod:生产环境配置
gcs:存储数据到Google的云存储
swift:存储数据到OpenStack Swift服务
glance:存储数据到OpenStack Glance服务,本地文件系统为后备
glance-swift:存储数据到OpenStack Glance服务,Swift为后备
elliptics:存储数据到Elliptics key/value存储
默认情况下使用模板dev,要使用某个模板作为默认值,可以添加SETTINGS_FLAVOR到环境变量中,如export SETTINGS_FLAVOR=dev
配置文件支持从环境变量中加载值,格式为:_env:VARIABLENAME[:DEFAULT]
四、数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
注:数据卷的使用,类似于Linux下对目录或文件进行mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看到的是挂载的数据卷。
创建数据卷
-v:创建一个数据卷并挂载到容器里
示例:docker run -d -v /webapp training/webapp COMMAND
挂载本地主机目录作为数据卷
示例1:docker run -d -v /src/webapp:/opt/webapp
示例2:docker run -d -v /src/webapp:/opt/webapp:ro (:ro指定为只读)
挂载本地主机文件作为数据卷:
示例:docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
删除数据卷:
docker rm -v:在删除容器的同时移除数据卷
查看数据卷的信息:
docker inspect web
五、数据卷容器
一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。一个正常的容器,专门用来提供数据卷供其他容器挂载的。
创建数据卷容器:
docker run -d -v /dbdata --name dbdata IMAGE COMMAND
使用数据卷容器:
docker run -d --volumes-from dbdata --name db1 IMAGE
注:可以使用超过一个的--volumes-from参数来指定从多个容器挂载不同的数据卷。也可以从其他其他挂载了数据卷的容器来级联挂载数据卷。--volumes-from参数所挂载数据卷的容器自己并不需要保持在运行状态
备份数据卷:
docker run --volumes-from dbdata -v ($pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
容器启动后,使用了tar命令来将dbdata卷备份到容器中/backup/backup.tar文件
恢复数据卷:
创建一个带有空数据卷的容器dbdata2
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
创建另一个容器,挂载dbdata2容器卷中的数据卷,并使用untar解压备份文件到挂载的容器卷
docker run --volumes-from dbdata2 -v ($pwd):/backup IMAGE tar xvf /backup/backup.tar
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考:
1.《docker_practice》
Docker学习(五): 仓库与数据管理的更多相关文章
- Docker学习-私有仓库docker-registry的使用
1.从docker官方仓库下载registry 2.将registry放进容器内 3.在官方下载镜像上传本地仓库 4.私有仓库docker-registry使用的常见问题 5.配置阿里云镜像加速器 假 ...
- Docker学习笔记之从镜像仓库获得镜像
0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...
- docker学习笔记(2)- 仓库
Docker仓库是镜像存储.分发.部署的关键,制作好应用程序镜像后上传到仓库,使用Docker daemon从仓库拉取后运行,我们可以使用官方共有仓库docker hub或者搭建私有仓库 Docker ...
- docker学习(8) 在mac机上搭建私有仓库
docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证 ...
- docker学习11-上传本地镜像到镜像仓库
前言 在本地自己制作用过镜像后,上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境. 如果公开的话,别人也可以用你的镜像快速搭建环境,类似于 GitHub 本地代码上传到代码仓库,再从仓库拉取代 ...
- Docker学习(六): 网络使用与配置
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- Docker学习笔记总结
Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/ 一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...
- DOCKER学习心得
原文:DOCKER学习心得 前言: Docker的主要学习心得来源于<docker技术入门与实战> --2019.1.1->2019.1.5 la 着重从基础部分--实例分析-- ...
- Docker 学习入门
一.Docker 简介 1.什么是 Docker Docker 是使用最广泛的开源容器引擎,它彻底释放了计算虚拟化的威力,极大提高了应用的运行效率,降低了云计算资源供应的成本! 使用 Docker,可 ...
随机推荐
- AI-Info-Micron:人如其食:人工智能和人类微生物组
ylbtech-AI-Info-Micron:人如其食:人工智能和人类微生物组 1.返回顶部 1. 人如其食:人工智能和人类微生物组 “相信你身体发出的信号”,的确是一个很好的建议.研究人员在不遗余力 ...
- IDEA去除 xml 中Sql语句的背景
去掉黄色背景 去掉绿色背景
- 第八届蓝桥杯JavaB---承压计算
标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形. 7 5 8 7 8 8 9 2 7 2 8 1 ...
- 在 django模型中封装元组和字典, 字段中使用chioce参数实现数据的一一对应
一.models.py中 class OrderInfo(BaseModel): '''订单模型类''' # 封装一个字典, 便于在视图中取值, 进行比对 PAY_METHODS = { : &quo ...
- python 将列表嵌套字典的unicode字符串转换为str格式的字符串的方法
今天在进行django开发的过程中遇到了一个非常棘手的问题, 因为需求原因, 需要将一份数据存为json格式到数据库中, 如下面这种格式: list_1 = [{"name":&q ...
- Python面向对象(定义类和创建对象)
day24 http://www.cnblogs.com/wupeiqi/p/4493506.html Python:函数式+面向对象,函数式编程可以做所有事,但是不一定合适. 小明,10岁,男,上山 ...
- 【转载】hadoop之failed task任务和killed task任务
failed task可理解为自杀,也就是task本身出了问题而自杀:killed task可理解为是他杀,也就是jobtracker认为这个任务的执行是多余的,所以把任务直接杀掉.起初用hadoop ...
- ElasticSearch NEST搜索
var client = ElasticsearchHelper.GetElasticClient("order");QueryContainer termQuery = new ...
- Linux 中排除掉筛选的文件
以下命令以网站目录www为例做介绍,有时候更新网站的时候需要保留比如图片目录,或者其他目录就需要这样的操作 实例一: 删除文件夹内所有文件只保留一个文件命令 [root@linuxzgf www]# ...
- RN47 中通过 JS 调用 Native 方法
每一个模块.方法都有一个 ID,通过 ID 来调用. m_registry->callNativeMethod(call.moduleId, call.methodId, std::move(c ...