目录

whalesay镜像可以做到的更好, 尤其是当你不知道自己想要说什么的时候. 你可以输入更多的命令来让它发声.

docker run docker/whalesay cowsay boo-boo

在接下来的部分, 你会改进并构建一个新的版本, 这个版本只需要非常少的命令就可以让他”自说自话”.

第一步: 写Dockerfile

在此步骤中,你使用Mac文本编辑程序来编写一个简短Dockerfile。一个Dockerfile文件描述了软件被”烧录”到镜像中. 他不是辅助性的, 这个文件可以告诉你软件的运行环境或者是运行的命令, 这个清单文件是非常.

如果你还没有打开终端, 那现在打开吧:

  1. 打开Launchpad, 找到Docker Quickstart Terminal图标

    这里写图片描述

  2. 点击Docker Quickstart Terminal图标, 打开一个窗口.

  3. 将光标定位到Docker Quickstart Terminal

  4. 通过命令mkdir mydockerbuild创建一个新的文件夹

    mkdir mydockerbuild

    这个目录就相当于一个你构建是的”环境”. 这个”环境”意味着构建镜像时你包含的所有东西

  5. 进入到你新建的文件夹

    cd mydockerbuild

    当前的这个文件夹是空的.

  6. 通过命令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构建你的镜像

  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

在此步骤中,在你的计算机上验证并运行新的镜像

  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帐户分享你的镜像.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐