博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker镜像的操作
阅读量:6262 次
发布时间:2019-06-22

本文共 2577 字,大约阅读时间需要 8 分钟。

 


 

在主机上列出镜像

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:5000/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 commentFROM ubuntu:14.04MAINTAINER admln 
RUN apt-get -qq updateRUN apt-get -qqy install ruby ruby-devRUN 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 的模板下载地址为  。

比如,先下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:

sudo cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04

镜像存出

要导出镜像到本地文件

sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

镜像载入

可以使用 docker load 从导出的本地文件中再导入到本地镜像库

sudo docker load --input ubuntu_14.04.tar

或者

sudo docker load < ubuntu_14.04.tar

docker实现增量修改和维护的原理:

每个镜像都由很多层次构成,Docker 使用  将这些不同的层结合到一个镜像中去


 

转载于:https://www.cnblogs.com/admln/p/operate-docker-image.html

你可能感兴趣的文章
COCOS学习笔记--即时动作ActionInstant
查看>>
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
查看>>
最全面的JS表单验证
查看>>
VS2013 查看程序各个函数的CPU利用率<转>
查看>>
python-标识符(Identifiers)和关键字(keywords)
查看>>
iframe双滚动栏 解决方案 CSS3 overflow-y 属性
查看>>
rsync数据同步工具
查看>>
文件上传限制文件类型
查看>>
基于Android平台的会议室管理系统具体设计说明书
查看>>
Linux常见命令(四)——mkdir
查看>>
正则表达式基础知识
查看>>
Web下的HTTPS应用
查看>>
perl数组的长度与元素个数
查看>>
Netty线程模型
查看>>
『Kaggle』Sklearn中几种分类器的调用&词袋建立
查看>>
017_nginx重定向需求
查看>>
[UWP]涨姿势UWP源码——RSS feed的获取和解析
查看>>
判断一个变量是否为空的方法
查看>>
linux 学习一:安装jdk和tomcat
查看>>
[js高手之路]html5 canvas动画教程 - 边界判断与反弹
查看>>