美文网首页
三、在容器中运行软件

三、在容器中运行软件

作者: Judy警官 | 来源:发表于2020-04-06 16:52 被阅读0次

    在上一节中,已经弄懂了docker的相关概念,那么它到底如何用在工作中呢?下面我们就用一个例子来说明docker的基本用法:建立一个网站的监控器,这个需求在我们的工作中是常见的,如下图:


    image.png

    总共需要建立3个容器:nginx服务器(当然我们不会在服务器上部署一个真正的应用,只是监视这个web服务器是否正常)、邮件服务器和监控器。实现的功能是:监控器监控nginx服务器,一旦有异常就通过邮件服务器发邮件。

    搭建环境

    1.镜像准备

    镜像地址:https://hub.docker.com/u/dockerinaction?page=1
    通过以下docker pull命令拉取镜像到本地:
    监控器镜像:

    docker pull dockerinaction/ch2_agent
    

    nginx镜像:

    docker pull nginx:latest
    

    邮件服务器镜像:

    docker pull dockerinaction/ch2_mailer
    

    2.创建并启动容器

    有两种启动容器的方法:后台运行和交互式运行。
    首先我们要在后台运行nginx和邮件服务器这两个容器,命令如下:

    docker run -d --name web nginx:latest
    docker run -d --name mailer dockerinaction/ch2_mailer 
    

    命令解释:

    • docker run :创建并启动一个容器
    • -d参数:后台运行程序
    • --name web:给niginx容器命名为web,给邮件服务器命名为mailer。
      最后一个参数是要使用的镜像(nginx:latest和dockerinaction/ch2_mailer)

    上面两个容器都是通过后台运行的方式启动的,不能和容器进行交互,接下来将使用交互式启动监控服务器。交互式容器需要一个标准输入流和一个虚拟终端。命令如下:

    docker run -it --name agent --link web:insideweb --link mailer:insidemailer dockerinaction/ch2_agent 
    

    命令解释:

    • -it参数:是--interactive(或-i)和--tty(或-t)的缩写,--interactive选项告诉Docker保持标准输入流(一般就是键盘啦~)对容器开放,即使容器没有终端连接。其次,--tty 选项告诉 Docker 为容器分配一个虚拟终端,这将允许你发信号给容器。
    • --link参数:链接一个容器,并通过指定被链接容器的name或者id,给被链接容器起一个别名,格式为--link <name or id>:alias。该参数可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。

    第三个容器运行之后,该容器将每秒测试Web容器,并打印消息:System up。想要退出交互式容器时,可以按住ctrl+p+q即可。

    测试环境

    软件环境搭建好了之后,我们来测试一下整个系统。测试的过程中会用到docker ps、docker restart、docker stop、docker logs等命令。回想一下我们搭建这个系统的目的,想要容器agent监控web服务器,当web服务器异常时发邮件报告。此时我们可以通过查看三个容器的日志来判断系统的正确性。

    1.查看当前运行的容器:

    docker ps
    

    结果如下图:


    image.png

    可以看到现在只有web和mailer两个容器是运行态,因为刚刚我们运行监控器agent容器时采用的是交互式,一旦退出交互就会停止交互式容器。接下来就要重启agent

    2.重启监控器agent容器:

    docker restart agent
    

    结果如下图:


    image.png

    现在可以看到web、mailer和agent三个容器都是运行态

    3.观察mailer容器的日志,查看是否有异常

    docker logs mailer
    

    结果如下图:


    image.png

    现在mailer没有任何日志,说明web容器运行正常

    4.停止web容器,再次查看mailer日志

    docker stop web
    docker logs mailer
    

    结果如下图:


    image.png

    这里可以看到mailer的有一条日志:Sending email: To: admin@work Message: The service is down!
    说明当web容器异常时,监控器agent容器检测到了,并且成功发送了邮件。

    至此,本例结束。如果你有一台linux机器,并且安装了docker,你就可以试一下上面的例子哦~

    相关文章

      网友评论

          本文标题:三、在容器中运行软件

          本文链接:https://www.haomeiwen.com/subject/zdhfphtx.html