初识Docker:构建本身的镜像

构建本身的镜像

whalesay镜像能够作到的更好, 尤为是当你不知道本身想要说什么的时候. 你能够输入更多的命令来让它发声docker run docker/whalesay cowsay boo-boo在接下来,咱们将会改进whalesay,构建一个新版本的镜像让他能够“自由说话”docker

Step1:编写一个Dockerfile文件

在这一步,用你喜欢的编辑器写一个简单的Dockerfile文件,一个Dockerfile文件描述了“刻录(baked)”到镜像里去的软件信息,还有,文件还会告诉软件使用什么样的环境或者运行什么样的命令。咱们要写的文件信息将会很简短。ubuntu

  1. 进入命令行窗口
  2. 建立一个新目录mydockerbuild来存放要写的Dockerfile

$ mkdir mydockerbuild编辑器

这个目录就是你等会构建镜像的“上下文”,意味着你构建用的的东西都包含在这里
  1. 进入到mydockerbuild目录

$ cd mydockerbuild
目录目前为空学习

  1. 建立Dockerfileui

    $ touch Dockerfilethis

  2. 打开Dockerfile,用可视化编辑器或vi都行spa

  3. 向文件里添加一行.net

    FROM docker/whalesay:latest命令行

FROM关键字的意思是指咱们要基于哪一个镜像来构建,这里咱们基于以前的whalesay来构建rest

  1. 如今将fortunes软件添加到镜像

    RUN apt-get -y update && apt-get install -y fortunes

    fortunes软件有个命令能够打印出说谚语的小鲸鱼,那咱们第一步就安装它。这条指令就是将fortunes安装到镜像里去

  2. 有了须要的软件,通知软件在镜像加载的时候运行

    CMD /usr/games/fortune -a | cowsay

    这条指令是告诉fortunes软件传一个谚语到cowsay软件

  3. 检查你的文件,应该和下面同样:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes

CMD /usr/games/fortune -a | cowsay
  1. 保存退出编辑

Step2:使用Dockerfile构建镜像

  1. 进入到Dockerfile所在的目录

  2. 使用docker build -t docker-whale .命令构建(不要忘了后面的.

     

$ docker build -t docker-whale . Sending build context to Docker daemon 2.048 kB ...snip... Removing intermediate container a8e6faa88df3 Successfully built 7d9495d03763

该命令将会花费几秒的时间,打印出构建信息(因为篇幅省略部分,下文会描述详细信息)。在你使用这个镜像以前,先花点时间来了解下Dockerfile的构建过程是怎样的。

## Step3:学习构建过程

命令`docker build -t docker-whale .`会找到当前目录下的Dockerfile文件,而且在你本地构建一个名叫`docker-whale`的镜像。过程会花费些时间并打印出看上去很长很复杂的信息。接下来,你将学习每一条信息的含义。

首先Docker会检查确保它拥有构建所需的所有东西,发送到Docker引擎

Sending build context to Docker daemon 2.048 kB

而后,Docker加载whalesay镜像。由于whalesay镜像本地已经存在了,就不会去从新下载

Step 1 : FROM docker/whalesay:latest ---> fb434121fc77

下一步是去更新`apt-get`包。有不少行,不必所有显示在这

Step 2 : RUN apt-get -y update && apt-get install -y fortunes ---> Running in 27d224dfa5b2 Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Ign http://archive.ubuntu.com trusty-security InRelease Hit http://archive.ubuntu.com trusty Release.gpg ....snip... Get:15 http://archive.ubuntu.com trusty-security/restricted amd64 Packages [14.8 kB] Get:16 http://archive.ubuntu.com trusty-security/universe amd64 Packages [134 kB] Reading package lists... ---> eb06e47a01d2

接下来,Docker安装新软件fortunes

Reading package lists... Building dependency tree... Reading state information... The following extra packages will be installed:
fortune-mod fortunes-min librecode0 Suggested packages:
x11-utils bsdmainutilsThe following NEW packages will be installed: fortune-mod fortunes fortunes-min librecode00 upgraded, 4 newly installed, 0 to remove and 3 not upgraded. Need to get 1961 kB of archives. After this operation, 4817 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main librecode0 amd64 3.6-21 [771 kB] ...snip...... Setting up fortunes (1:1.99.1-7) ... Processing triggers for libc-bin (2.19-0ubuntu6.6) ... ---> c81071adeeb5 Removing intermediate container 23aa52c1897c

## Step4:运行你新构建的`docker-whale`

在这一步,咱们要验证新的镜像已经存在本地,而后运行起来

1. 进入命令行,输入`docker images`命令按回车    
这条命令就是显示本地存在的镜像

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker-whale latest 7d9495d03763 4 minutes ago 273.7 MB docker/whalesay latest fb434121fc77 4 hours ago 247 MB hello-world latest 91c95931e552 5 weeks ago 910 B

2. 输入命令` docker run docker-whale `运行新的镜像    
![输入图片说明](https://static.oschina.net/uploads/img/201611/24194852_SUxU.jpg "在这里输入图片标题")

你看,如今这条小鲸鱼聪明多了。咱们输入命令比之前短了,小鲸鱼会本身找话说!你可能注意到Docker没有去下载任何东西,那是由于咱们构建的镜像已是在本地了
相关文章
相关标签/搜索