构建你本身的镜像

目录

whalesay镜像能够作到的更好, 尤为是当你不知道本身想要说什么的时候. 你能够输入更多的命令来让它发声.docker

docker run docker/whalesay cowsay boo-booubuntu

在接下来的部分, 你会改进并构建一个新的版本, 这个版本只须要很是少的命令就可让他”自说自话”.学习

第一步: 写Dockerfile

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

若是你尚未打开终端, 那如今打开吧:this

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

    这里写图片描述

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

  3. 将光标定位到Docker Quickstart Terminal命令行

  4. 经过命令mkdir mydockerbuild建立一个新的文件夹rest

    mkdir mydockerbuildcode

    这个目录就至关于一个你构建是的”环境”. 这个”环境”意味着构建镜像时你包含的全部东西

  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. mkdir docker-whale

  3. cd docker-whale

  4. touch Dockerfile

  5. open -e Dockerfile

  6. 输入&保存

    FROM docker/whalesay:latest
    
    RUN apt-get -y update && apt-get install -y fortunes
    
    CMD /usr/games/fortune -a | cowsay

     

  7. 在当前文件夹下输入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
  8. 如今, 在终端中输入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账户分享你的镜像.

相关文章
相关标签/搜索