构建你自己的镜像
whalesay镜像可以做到的更好, 尤其是当你不知道自己想要说什么的时候. 你可以输入更多的命令来让它发声.docker run docker/whalesay cowsay boo-boo在接下来的部分, 你会改进并构建一个新的版本, 这个版本只需要非常少的命令就可以让他”自说自话”. 第一步: 写Dockerfile在此步骤中,你使用Mac文本编辑程序来编写一个简短Dockerfile。一个
目录
- 开始使用Docker
- 在OS X安装Docker
- 理解镜像(images)和容器(containers)
- 搜索&运行whalesay镜像
- 构建你自己的镜像
- 创建Docker Hub账号(account)&库(repository)
- 标记(Tag),推送(Push),拉取(Pull)你自己的镜像
whalesay镜像可以做到的更好, 尤其是当你不知道自己想要说什么的时候. 你可以输入更多的命令来让它发声.
docker run 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
现在,输入
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描述的所有软件成分和行为。您准备建立一个新的形象。
第二步: 根据Dockerfile构建你的镜像
将你的光标重新定位到Docker Quickstart Terminal上
在当前文件夹下输入
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-whale
在此步骤中,在你的计算机上验证并运行新的镜像
如果已不存在,请将光标在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帐户分享你的镜像.
更多推荐
所有评论(0)