whalesay镜像能够作到的更好, 尤为是当你不知道本身想要说什么的时候. 你能够输入更多的命令来让它发声.docker
docker run docker/whalesay cowsay boo-boo
ubuntu
在接下来的部分, 你会改进并构建一个新的版本, 这个版本只须要很是少的命令就可让他”自说自话”.学习
在此步骤中,你使用Mac文本编辑程序来编写一个简短Dockerfile。一个Dockerfile文件描述了软件被”烧录”到镜像中. 他不是辅助性的, 这个文件能够告诉你软件的运行环境或者是运行的命令, 这个清单文件是很是.ui
若是你尚未打开终端, 那如今打开吧:this
打开Launchpad, 找到Docker Quickstart Terminal图标spa
点击Docker Quickstart Terminal图标, 打开一个窗口..net
将光标定位到Docker Quickstart Terminal命令行
经过命令mkdir mydockerbuild
建立一个新的文件夹rest
mkdir mydockerbuild
code
这个目录就至关于一个你构建是的”环境”. 这个”环境”意味着构建镜像时你包含的全部东西
进入到你新建的文件夹
cd mydockerbuild
当前的这个文件夹是空的.
经过命令touch Dockerfile
在这个文件夹下建立一个Dockerfile文件
$ touch Dockerfile
这个命令不会有任何回馈, 可是它确实建立了Dockerfile文件在当前的文件夹. 能够输入ls Dockerfile
来查看
$ ls Dockerfile Dockerfile
如今,输入open -e Dockerfile
在Mac的TextEdit程序中打开这个文件
你的Mac使用TextEdit程序打开了一个空的文件
在打开的文件中输入FROM docker/whalesay:latest
如今, 看起来应该是这样的:
关键字FROM告诉Docker你的镜像是基于哪一个镜像构建的. 你是基于已经存在的whalesay镜像建立新的工做
如今, 添加fortunes程序到镜像
fortunes程序是一个让whale聪明的说出语句的命令. 因此, 咱们须要先安装这个程序. 这一行使用了apt-get
命令安装fortunes, 若是这些对你来讲很难理解, 不用担忧, 只要你输入正确, 他们就会正常运行的.
一旦镜像有了它所需的软件, 就能够在命令他在加载镜像的时候运行软件.
这一行是告诉fortune程序发送一个俏皮的引用给cowsay程序
在TextEdit菜单中选择文件 > 保存或者按CMD+S保存Dockerfile
在这一点上,你在一个Dockerfile描述的全部软件成分和行为。您准备创建一个新的形象。
将你的光标从新定位到Docker Quickstart Terminal上
mkdir docker-whale
cd docker-whale
touch Dockerfile
open -e Dockerfile
输入&保存
FROM docker/whalesay:latest RUN apt-get -y update && apt-get install -y fortunes CMD /usr/games/fortune -a | cowsay
在当前文件夹下输入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
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 Quickstart Terminal窗口的提示。
输入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
输入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账户分享你的镜像.