wefwhr 发表于 2015-8-4 09:07:16

创建容器及Dokcer中运行应用

    我们确认docker是否正常工作,首先我们需要获取最新的centos镜像

    $docker pull centos:latest

    $docker images centos               查看Docker镜像

    # docker images centos

    REPOSITORY          TAG               IMAGE ID            CREATED             VIRTUAL SIZE

    centos            latest            7322fbe74aa5      6 weeks ago         172.2 MB

    $docker run -i -t centos /bin/bash运行简单的bash shell来测试这个镜像创建

    创建Docker Hub账户

    这里有两种访问可以创建和注册一个Docker Hub账户:

   1.通过网站,或者

   2.通过命令行

    通过网站注册

    填写注册表单,选择您的用户名和密码并制定您的电子邮箱。你也可以报名参加docker邮件列表,会有很多关于docker的信息

    命令登录DockerHub

    $Docker login

    在Docker中运行"Hellow wrold"

    $Docker run centos /bin/echo 'hello world'      运行了第一个容器

    Docker run 都运行了那些步骤    我们指定了 Docker二进制中我们想要执行的命令,run。docker run 组合运行容器,运行的镜像是centos(当指定的镜像不存在时就会从公共镜像库下载),然后执行run 创建一个容器,然后告诉Docker在新容器运行什么命令 \bin\echo,就会看到结果 hello world,如果Docker容器输入指令激活时,这里只要hello word输出,容器就会停止。

    $docker run -t -i ubuntu:14.04 /bin/bash    -t和-i。-t标示在心容器内指定一个伪终端或终端,-i标示允许我们对容器内的STDIN进行交互。/bin/bash。这将在容器内启动bash shell;

    当你运行完一些命令,输入exit退出。

    $docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

    1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147

    docker但是我们指定了一个-d标识。-d标识告诉docker运行容器在后台模式运行。

    这是一个荒谬的hello word进程:一个脚本会一直输出"hello word"

    为什么不是我们看到的一大堆的"hello word"?而是docker返回的一个很长的字符串:

    1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147

    这个长的字符串叫做容器ID。它是容器的唯一标识,所以我们可以使用它。

   注意:容器ID是有点长并且非常的笨拙,稍后我们会看到一个断点的ID,某些方面来说它是容器ID的简化版。

    docker ps 命令必须确保容器正在运行

    #我们可以使用docker ps -a命令来查看(无需关心容器有没有运行)。docker ps命令可以查询docker进程的所有容器。

    # docker ps -a   

    CONTAINER ID      IMAGE               COMMAND                CREATED             STATUS                  PORTS               NAMES

    d162d83800cf      centos:latest       "/bin/bash"            2 days ago          Exited (0) 2 days ago                         reverent_mclean   

    325af222cdd9      centos:latest       "/bin/echo 'hellow w   2 days ago                                                      naughty_stallman   

    6452d29e7540      centos:latest       "/bin/bash echo 'hel   2 days ago          Exited (126) 2 days ago                     adoring_mccarthy   

    db8321ced433      centos:latest       "/bin/bash"            2 days ago          Exited (0) 2 days ago                         silly_euclid      

    a1edce86da9b      centos:latest       "/bin/bash"            2 days ago          Exited (0) 2 days ago                         angry_goodall      

    41035d2328ea      centos:latest       "/bin/bash"            3 days ago          Exited (0) 3 days ago   

    docker ps命令会返回一些有用的信息,这里包括一个短的容器ID:d162d83800cf。自动分配了名称:reverent_mclean

    注意:docker会在容器启动的时候自动给容器命名,稍后我们可以看到我们如何给容器指定名称。

    我们需要在我们容器内使用docker logs命令(正在运行的容器内)。

    让我们给系统自动分配名称的容器使用这个命令。

$docker logs angry_goodalldocker logs   命令看起来想运行在容器内并且返回标准输出:这种情况下我们的命令输出hello word太棒了;停止这个后台进程容器。为此让我们使用docker stop命令停止。

$docker stop insane_babbagedocker stop命令会通知docker停止正在运行的容器。如果它成功了,它将返回刚刚停止的容器名称。通过docker ps命令来检查它是否还工作。$ sudo docker ps CONTAINER IDIMAGE         COMMAND               CREATED      STATUS       PORTS NAMES
页: [1]
查看完整版本: 创建容器及Dokcer中运行应用