whalesay镜像可以做到的更好, 尤其是当你不知道自己想要说什么的时候. 你可以输入更多的命令来让它发声.
Dockerrun docker/whalesay cowsay boo-boo
在接下来的部分, 你会改进并构建一个新的版本, 这个版本只需要非常少的命令就可以让他”自说自话”.
第一步: 写Dockerfile
在此步骤中,你使用Mac文本编辑程序来编写一个简短Dockerfile。一个Dockerfile文件描述了软件被”烧录”到镜像中. 他不是辅助性的, 这个文件可以告诉你软件的运行环境或者是运行的命令, 这个清单文件是非常.
如果你还没有打开终端, 那现在打开吧:
打开Launchpad, 找到Docker Quickstart Terminal图标
点击Docker Quickstart Terminal图标, 打开一个窗口.
将光标定位到Docker Quickstart Terminal
通过命令
mkdir mydockerbuild创建一个新的文件夹mkdir mydockerbuild这个目录就相当于一个你构建是的”环境”. 这个”环境”意味着构建镜像时你包含的所有东西
进入到你新建的文件夹
cd mydockerbuild当前的这个文件夹是空的.
通过命令
touch Dockerfile在这个文件夹下创建一个Dockerfile文件$ touch Dockerfile这个命令不会有任何回馈, 但是它确实创建了Dockerfile文件在当前的文件夹. 可以输入
ls Dockerfile来查看``` $ ls Dockerfile Dockerfile
7. 现在,输入`open -e Dockerfile`在Mac的TextEdit程序中打开这个文件
你的Mac使用TextEdit程序打开了一个空的文件

8. 在打开的文件中输入`FROM docker/whalesay:latest`
现在, 看起来应该是这样的:

关键字FROM告诉Docker你的镜像是基于哪个镜像构建的. 你是基于已经存在的whalesay镜像创建新的工作
9. 现在, 添加fortunes程序到镜像

fortunes程序是一个让whale聪明的说出语句的命令. 所以, 我们需要先安装这个程序. 这一行使用了`apt-get`命令安装fortunes, 如果这些对你来说很难理解, 不用担心, 只要你输入正确, 他们就会正常运行的.
10. 一旦镜像有了它所需的软件, 就可以在命令他在加载镜像的时候运行软件.

这一行是告诉fortune程序发送一个俏皮的引用给cowsay程序
11. 在TextEdit菜单中选择文件 > 保存或者按CMD+S保存Dockerfile
在这一点上,你在一个Dockerfile描述的所有软件成分和行为。您准备建立一个新的形象。
# 第二步: 根据Dockerfile构建你的镜像 {#第二步-根据dockerfile构建你的镜像}
1. 将你的光标重新定位到Docker Quickstart Terminal上
2. 在当前文件夹下输入`cat Dockerfile`确认一下Dockerfile是否正确:
$ cat Dockerfile FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
3. 现在, 在终端中输入`docker build -t docker-whale .`构建你的新镜像\(不要遗漏 . \)
$ docker build -t docker-whale . Sending build context to Docker daemon 158.8 MB ...snip... Removing intermediate container a8e6faa88df3 Successfully built 7d9495d03763
该命令需要几秒钟运行并报告其结果。在你使用新的镜像之前,花一点时间了解Dockerfile构建过程。
# 第三步: 学习构建过程 {#第三步-学习构建过程}
命令`docker build -t docker-whale .`会在本机使用当前目录下的Dockerfile构建一个叫docker-whale的镜像. 这个命令会运行大概一分钟的时间, 输出的内容看起来很长而且很复杂. 在这一部分, 你会学习到这些输出所表示的内容.
首先Docker会检查所有需要构建的内容.
`Sending build context to Docker daemon 158.8 MB`
然后, Docker加载whalesay镜像. 它是一个已经存在的, 不需要下载的镜像.
Step 0 : FROM docker/whalesay:latest ---> fb434121fc77
Docker进行下一步更新apt-get包管理器. 会输出很多, 没必要在一一列举
Step 1 : 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软件
Removing intermediate container e2a84b5f390f Step 2 : RUN apt-get install -y fortunes ---> Running in 23aa52c1897c 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 bsdmainutils The following NEW packages will be installed: fortune-mod fortunes fortunes-min librecode0 0 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
最后, Docker完成构建并输入结果
Step 3 : CMD /usr/games/fortune -a | cowsay ---> Running in a8e6faa88df3 ---> 7d9495d03763 Removing intermediate container a8e6faa88df3 Successfully built 7d9495d03763
# 第四步: 运行新的镜像docker-whale {#第四步-运行新的镜像docker-whale}
在此步骤中,在你的计算机上验证并运行新的镜像
1. 如果已不存在,请将光标在Docker Quickstart Terminal窗口的提示。
2. 输入`docker images`
这个命令,你可能还记得,列出了在本地的图像。
$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL 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
3. 输入`docker run docker-whale`命令运行新的镜像
$ docker run docker-whale
_________________________________________
/ "He was a modest, good-humored boy. It \
\ was Oxford that made him insufferable." /
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
```
正如你所看到的,你所做的whale聪明很多。它发现自己的东西,说和命令行是短了很多!您可能还注意到,Docker没有下载任何东西。这是因为镜像在构建的时候已经可用。
下一步去哪里
在这一章节,你学会了写自己的Dockerfile建立镜像。你在一个容器中运行你的镜像。你也刚用过Linux与Mac的又一次。在下一节中,你采取通过创建一个Docker Hub帐户分享你的镜像.