docker镜像的操作
在主机上列出镜像
sudo docker images
每从Docker Hub
下载一个镜像就会启动相对的创建一个容器
在镜像列表中看到三个重要的东西:
- 来自什么镜像源,例如
ubuntu
- 每个镜像都有标签,例如
14.04
- 每个镜像都有镜像ID
运行一个带标签镜像的容器:
sudo docker run -t -i ubuntu:14.04 /bin/bash
如果不指定一个镜像的版本标签,例如你只使用Ubuntu
,Docker将默认使用Ubuntu:latest
镜像
建议使用镜像时指定一个标签
获取一个新的镜像
用docker pull
命令来下载
sudo docker pull centos
注:有时候下载比较慢,可以使用国内第三方库下载
sudo docker pull dl.dockerpool.com:/ubuntu:12.04
查找镜像
可以去网上的查找docker hub 的镜像
或者使用命令行
sudo docker search sinatra
可以看到列表中有镜像名称、描述、Stars(衡量镜像的流行度-如果用户喜欢这个镜像他就会点击stars)和官方自动构建镜像状态
Stackbrew维护者官方仓库源,镜像源是自动构建的,可以验证图像的来源和内容
两种类型的镜像,像ubuntu
镜像,我们称它为基础镜像或者根镜像
这些镜像是由docker公司提供建立、验证和支持
还有一种就是用户镜像,例如training/sinatra
创建自己的镜像
如果公共镜像源中没有想要的镜像,可以跟新镜像或者创建镜像达到目的
- 1.我们可以从已经创建的容器中更新镜像,并且提交这个镜像。
- 2.我们可以使用
Dockerfile
指令来创建一个镜像。
更新一个镜像,首先我们要创建一个我们想更新的容器
sudo docker run -t -i training/sinatra /bin/bash
在我们的容器内添加json
gem install json
然后通过用docker commit
来提交这个容器
sudo docker commit -m="added json gem" -a="admln" 7cdb7bf497a7 admln/sinatra:v2
注意:root@7cdb7bf497a7: 中7cdb7bf497a7是这个容器的短ID
-m
标示是允许我们指定提交的信息,就像你提交一个版本控制,-a
标示允许对我们的更新指定一个用户
admln为新的用户名字,保留了原有的镜像名称sinatra,最后为镜像指定了一个标签 v2
使用Dockerfile
创建镜像
创建一个Dockerfile
其中包含一组指令告诉docker如何创建镜像
创建一个目录,并且创建一个 Dockerfile
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
# This is a comment
FROM ubuntu:14.04
MAINTAINER admln <admln@example.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
每一个指令会让镜像创建一个新的层
每个指令前缀都必须大写
使用 #
注释
第一个指令FROM
告诉Docker使用哪个镜像源,在这个案例中使用了一个Ubuntu 14.04
基础镜像
使用MAINTAINER
指令指定谁是维护者
最后指定三个RUN
指令,一个RUN
指令在镜像内执行命令。例如安装包
使用 docker build
命令和 Dockerfile
命令来创建一个镜像
sudo docker build -t="admln/sinatra:v3" ./sinatra/
-t
来标示我们的新镜像,用户是admln
、仓库源名称sinatra
、标签是v3
./sinatra/
来指定Dockerfile
docker做的第一件事是通过你的上下文构建。基本上是目录的内容构建。docker会根据本地的内容来在docker进程中去构建
下一步Dockerfile
一步一步执行命令,每个步骤可以创建一个新的容器,在容器内运行指令并且提交改变,就像早期看到的docker commit
流程,当所有的指令执行完成之后,就会得到324104cde6ad
镜像(有助于标记admln/sinatra:v3),然后所有中间容器会被删除干净
设置镜像标签
以给现有的镜像添加标记,然后提交和构,使用 docker tag
命令
sudo docker tag 3dc27133f65d admln/sinatra:devel
向Docker Hub推送镜像
sudo docker push admln/sinatra
主机中移除镜像
sudo docker rmi training/sinatra
注: sudo docker rm * 为移除容器。
镜像导入
要从本地文件系统导入一个镜像,可以使用 openvz(容器虚拟化的先锋技术)的模板来创建: openvz 的模板下载地址为 templates 。
比如,先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
镜像存出
要导出镜像到本地文件
sudo docker save -o ubuntu_14..tar ubuntu:14.04
镜像载入
可以使用 docker load
从导出的本地文件中再导入到本地镜像库
sudo docker load --input ubuntu_14..tar
或者
sudo docker load < ubuntu_14..tar
docker实现增量修改和维护的原理:
每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去
docker镜像的操作的更多相关文章
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- Docker镜像文件操作
1什么是Docker镜像 Docker镜像是由文件系统叠加而成(是一种文件的存储形式).最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永 ...
- 【快学Docker】Docker镜像相关操作
前言 镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库). Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像.镜像是Docker一大核 ...
- Docker 镜像的操作
1. 从docker 镜像仓库获取镜像 docker pull [镜像名] 从 docker hub 中查看版本 获取 特定版本 docker pull centos 7.6.1801 2. ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(上)
文章首发于微信公众号: 小哈学Java 镜像作为 Docker 三大核心概念中,最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌握的.本文将带您一步一步,图文并重,上手操作来学习它. 目录 ...
- docker 镜像管理操作
镜像特点 1. 分层存储的文件 2.一个软件运行环境 3.一个镜像可以创建多个容器 4.一种标准交付 5.不包含Linux内核而又精简的Linux操作系统 6.不是一个单一的文件而是由多层构成的,可以 ...
- docker镜像常用操作的基本命令
1.拉取/下载镜像 docker pull 镜像名称 (可以从网易云镜像中心获取要下载的镜像) 2.查看已经下载的镜像 docker images 3.删除本地镜像 docker rmi ...
- Docker 镜像小结---操作指令介绍(七)
目录 一.搜索镜像 二.下载镜像 三.查看本地镜像 四.显示镜像构建历史 五.删除镜像 六.镜像创建 七.上传镜像 八.给镜像打 tag 九.存出和载入镜像 一.搜索镜像 很多情况下我们可能需要下载某 ...
- Docker镜像相关操作
批量导入镜像 ll *.tgz|awk '{print $NF}'|sed -r 's#(.*)#docker load -i \1#' |bash 批量打tag docker images | se ...
随机推荐
- T-SQL 变量
T-SQL变量 变量的种类: 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 1.全局变量是由系统定义的,在整个SQL Se ...
- 深入浅出谈存储:如何区别NAS、SAN与DAS
深入浅出谈存储:如何区别NAS.SAN与DAS 2012年02月17日16:51 来源:新浪博客 作者:林沛满 编辑:曾智强 查看全文 赞(0)评论(1) 分享 标签: DAS , SAN , 存储系 ...
- UVALive 3953 Strange Billboard (状态压缩+枚举)
Strange Billboard 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/A Description The marke ...
- C# Common Keyword
[C# Common Keyword] 1.abstract Use the abstract modifier in a class declaration to indicate that a c ...
- SqlAgent备份脚本
) ) set @dbname='emcp' set @back_path= 'e:\'+@dbname+'\'+@dbname ),) )) )) )) +'.bak' exec('use ['+@ ...
- 开源文件比较工具:WinMerge、KDiff3、diffuse
为了寻找免费的BeyondCompare的替代品,最后经过实用,找到如下一些: 1.diffuse 感受:如果仅仅是比较两个文本类的文件,这个软件也就够用了. 安装好后,对着文件点击右键,会出现“Op ...
- ASP.NET MVC- Upload File的例子
上传文件是一项基本功能,一定要了解的.先来看一下使用ASP.NET MVC实现简单的上传. 一.简单的例子 Controller的例子 public ActionResult UploadDemo() ...
- 转载 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一&二)——初识WiX
转载fromVan Pan 的专栏 http://blog.csdn.net/rryqsh/article/details/8274832 http://blog.csdn.net/rryqsh/ ...
- 【原创】[PS技巧]如何制作翘角纸条的阴影效果
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-19) 在网页设计中经常会用到翘角纸条的效果.如:百度空间首页: pic.1 下面我详细讲解一下这个效果使用PS如何制 ...
- XGrid绑定(转)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Fo ...