whalesay镜像能够作到的更好, 尤为是当你不知道本身想要说什么的时候. 你能够输入更多的命令来让它发声docker run docker/whalesay cowsay boo-boo
在接下来,咱们将会改进whalesay,构建一个新版本的镜像让他能够“自由说话”docker
在这一步,用你喜欢的编辑器写一个简单的Dockerfile文件,一个Dockerfile文件描述了“刻录(baked)”到镜像里去的软件信息,还有,文件还会告诉软件使用什么样的环境或者运行什么样的命令。咱们要写的文件信息将会很简短。ubuntu
$ mkdir mydockerbuild
编辑器
这个目录就是你等会构建镜像的“上下文”,意味着你构建用的的东西都包含在这里
$ cd mydockerbuild
目录目前为空学习
建立Dockerfileui
$ touch Dockerfile
this
打开Dockerfile,用可视化编辑器或vi都行spa
向文件里添加一行.net
FROM docker/whalesay:latest
命令行
FROM关键字的意思是指咱们要基于哪一个镜像来构建,这里咱们基于以前的whalesay来构建rest
如今将fortunes软件添加到镜像
RUN apt-get -y update && apt-get install -y fortunes
fortunes软件有个命令能够打印出说谚语的小鲸鱼,那咱们第一步就安装它。这条指令就是将fortunes安装到镜像里去
有了须要的软件,通知软件在镜像加载的时候运行
CMD /usr/games/fortune -a | cowsay
这条指令是告诉fortunes软件传一个谚语到cowsay软件
检查你的文件,应该和下面同样:
FROM docker/whalesay:latest RUN apt-get -y update && apt-get install -y fortunes CMD /usr/games/fortune -a | cowsay
进入到Dockerfile所在的目录
使用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 `运行新的镜像  你看,如今这条小鲸鱼聪明多了。咱们输入命令比之前短了,小鲸鱼会本身找话说!你可能注意到Docker没有去下载任何东西,那是由于咱们构建的镜像已是在本地了