标签:docker
docker镜像是容器的基础,当每次执行docker run时就是在对docker说现在我需要哪个镜像。如果在你的docker主机上没有这个镜像,docker会自动从一个registry上下载这个镜像(默认为docker hub)
在这一节,我们将会探讨更多的关于docker镜像的内容:
管理和使用本地镜像
创建基础镜像
使用docker images命令列出本地的docker镜像
[root@docker-1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-whale latest 05bfcfec1909 7 days ago 252.7 MB docker/docker-whale latest 05bfcfec1909 7 days ago 252.7 MB nginx latest e43d811ce2f4 2 weeks ago 181.4 MB ubuntu latest f753707788c5 3 weeks ago 127.1 MB
你可以看到所有之前用过的镜像,同时通过列出所有镜像,我们可以知道三个很重要的信息
每个镜像来自于那个仓库(repository)
每个惊喜的标签是什么(tag)
每个镜像的IMAGE ID
一个镜像仓库中对于一个镜像可能有多个不同的变体,比如说对于ubuntu来说,我们可能会找到Ubuntu 10.04, 12.04, 12.10, 13.04, 13.10 and 14.04这么多不同的变体,所以我们会通过一个标签(tag)来区分不同的变体,如下所示
ubuntu:14.04
所以,当你要创建一个容器时,你可以参考下面来标记镜像
$ docker run -t -i ubuntu:14.04 /bin/bash
如果你想创建一个Ubuntu 12.04的容器,请参考下面:
$ docker run -t -i ubuntu:12.04 /bin/bash
如果你没有指定标签,我们还用ubuntu举例,docker会默认使用ubuntu:latest镜像
Tip:我们应该尽量指定镜像标签,例如ubuntu:14.04,那样我们就能精确地知道我们使用的是哪个镜像,对我们后期的排查和调试会有很大帮助
现在获取一个新的镜像
$ docker pull centos Using default tag: latest latest: Pulling from library/centos f1b10cd84249: Pull complete c852f6d61e65: Pull complete 7322fbe74aa5: Pull complete Digest: sha256:90305c9112250c7e3746425477f1c4ef112b03b4abe78c612e092037bfecc3b7 Status: Downloaded newer image for centos:latest
查找一个镜像
$ docker search sinatra NAME DESCRIPTION STARS OFFICIAL AUTOMATED training/sinatra Sinatra training image 0 [OK] marceldegraaf/sinatra Sinatra test app 0 mattwarren/docker-sinatra-demo 0. . .
如果这其中有你需要的镜像,你就可以把它pull到本地了
$ docker pull training/sinatra
创建一个我们自己的镜像
我们从docker hub上下载的镜像可能不能完全满足我们的实际需要,这时候我们就需要对他做一些更新或修改了,我们主要更新或修改一个镜像的方式主要有以下两种:
先用镜像创建出一个容器,然后对容器做修改,最后将容器提交(commit)为一个新的镜像
首先创建一个容器 $ docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/# 在容器内安装一些需要的软件包 root@0b2616b0e5a8:/# apt-get install -y ruby2.0-dev ruby2.0 将这个容器提交为新的镜像 $ docker commit -m "Added json gem" -a "Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2 之后通过这个镜像创建的容器就会有上面安装的软件包了
可以用Dockerfile去创建一个指定的镜像
首先创建一个目录和一个Dockerfile $ mkdir sinatra $ cd sinatra $ touch Dockerfile 向Dockerfile中写入指令 # This is a comment FROM ubuntu:14.04 MAINTAINER Kate Smith <ksmith@example.com> RUN apt-get update && apt-get install -y ruby ruby-dev RUN gem install sinatra 然后就可以通过build命令创建自己定制的镜像 $ docker build -t ouruser/sinatra:v2 .
Note:一个镜像最多不能超过127层,这是为了使镜像的整体大小处在一个最佳状态的全局设置
标签:docker
原文地址:http://peitianwang.blog.51cto.com/7179782/1871145