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

三、在容器中运行软件

作者: 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,你就可以试一下上面的例子哦~

相关文章

  • 三、在容器中运行软件

    在上一节中,已经弄懂了docker的相关概念,那么它到底如何用在工作中呢?下面我们就用一个例子来说明docker的...

  • 在容器中运行软件

    以下步骤遇到连接超时问题,请参考《更换docker镜像源》将源设置为国内站点。1.以守护进程的形式在docker中...

  • Docker

    在GitHub搜索软件镜像模板: 下载仓库中镜像名 查看docker中的所有镜像模板 查看运行的容器 运行dock...

  • MySQL学习笔记-能在Docker 中跑 MySQL吗?

    容器 容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。 目前,容器和 Docke...

  • 20个为桌面用户准备的令人惊叹的Docker容器

    大家好,今天我们会列出一些运行在Docker容器中的很棒的桌面软件,我们可以在自己的桌面系统中运行它们。Docke...

  • Docker?Rkt?Lxd?细说K8S容器进行时的又一选项Co

    器运行时是执行容器并在节点上管理容器镜像的软件,目前,最广为人知的容器运行时是Docker,但在生态系统中还有其他...

  • docker守护容器

    以守护形式运行容器 附加到运行中的容器 启动守护式容器: 查看容器日志: 查看容器内进程 在运行中的容器内启动新进...

  • docker

    一. docker是什么 docker是一个运行在操作系统上的软件,这个软件上面可以运行多个相互隔离的容器,容器可...

  • Docker 容器操作 常用命令

    软件镜像(如 weChat.exe)----> 运行镜像----> 产生一个容器(正在运行的软件,运行的 微信程序...

  • master docker 2基础命令2

    查看容器内部信息 交互式运行容器命令: 让运行中的容器另外运行一个命令的命令: 在运行的nginx容器中运行bas...

网友评论

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

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