Docker 完全指南( 二 )

  • 加上 -l 可以列出最后一次运行的容器
  •  
    一个简单的例子
    接下来我们用一个简单的例子来体验下 docker
    容器小介绍
    容器是独立运行的一个或一组应用,以及它们的运行态环境 。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用 。
    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动 。因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器(对于初级应用来说后者更方便) 。
    当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
    • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
    • 利用镜像创建并启动一个容器
    • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
    • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
    • 从地址池配置一个 ip 地址给容器
    • 执行用户指定的应用程序
    • 执行完毕后容器被终止
     
    可以利用 docker start 命令,直接将一个已经终止的容器启动运行 。
    运行容器
    现在,我们来创建一个 ubuntu:14.04 的容器 docker run ubuntu:14.04 /bin/echo 'Hello wdx!'(结果如下图所示)
    Docker 完全指南

    文章插图
     
     
    可以看到正确输出了我们的 “Hello wdx!”
    接下来,我们用 docker run -t -i ubuntu:14.04 /bin/bash 可以启动一个 bash 终端用来交互 。参数的意思是:
    • -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
    • -i 则让容器的标准输入保持打开
     
    我们可以输入一些命令来测试
    Docker 完全指南

    文章插图
     
     
    容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的 。除此之外,并没有其它的资源 。我们用 ps 或 top 在伪终端中查看进程信息,可以看到只有我们运行的进程,没有其他花里胡哨的(上图最后一条命令)
    试一试如下命令
    • cat /etc/hosts
    • ip a
    • ps -aux
    • cd ~ && echo "hello wdx" > hello.txt && cat hello.txt
     
    (细心的同学可能会发现这里的输出暗藏玄机)
    操作完成后,输入 exit 便可以退出这个 ubuntu 容器 。退出之后这个容器依然存在,我们可以用 docker ps -l来看看:
    Docker 完全指南

    文章插图
     
     
    每个容器有一个 Container ID 和 Name,我们一般就是通过这俩来定位一个容器的 。
    镜像
    我们可以使用 docker pull 命令从仓库中获取所需要的镜像 。比如说 sudo docker pull ubuntu:12.04,相当于 sudo docker pull registry.hub.docker.com/ubuntu:12.04,即从注册服务器 registry.hub.docker.com中的 ubuntu 仓库来下载标记为12.04 的镜像 。
    如果想从其他仓库注册服务器下载,需要输入完成的地址,例如:sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
    下载完成之后就可以使用该镜像了,比如下面的语句就会创建容器,其中运行 bash:sudo docker run -t -i ubuntu:12.04 /bin/bash
    可以使用 dokcer images 来显示本地已有的镜像,如下
    Docker 完全指南

    文章插图
     
     
    具体字段的意思一目了然,这里不再赘述 。然后我们来运行官方例子 whalesay 镜像 。
    运行镜像
    打开浏览器,进入 Docker Hub
    Docker 完全指南

    文章插图
     
     
    搜索 whalesay 这个镜像,就可以看到结果,点进去可以看到详细内容(基于 Ubuntu)
    Docker 完全指南

    文章插图
     
     
    然后我们来运行一下,使用命令 docker run docker/whalesay cowsay boo,其中 cowsay 是要运行的命令,后面的 boo 是参数 。
    Docker 会先在本地查找有没有镜像,如果没有就从仓库中下载,具体的运行结果是:
    Docker 完全指南

    文章插图
     
     
    也可以让鲸鱼说不同的话,比如:
    Docker 完全指南

    文章插图
     


    推荐阅读