注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 容器服务

EWS部署运行问题排查基础知识

更新时间:2019/07/30 访问次数:3954

1、Docker常识

docker是一种虚拟化技术,通过文件系统的隔离,一台宿主机ECS上可以运行多个容器,互不干扰。

基于镜像,docker创建容器并运行在独立的文件空间,容器停止或删除空间就会销毁,即容器运行时数据无法持久化。但是通过设置volume,可以将容器运行时的目录挂载到宿主机,达到持久化的目的。举个例子,容器中/acs/log/目录对应宿主机的/acs/容器id/log/,所以最佳实践是在应用程序代码中(或者EWS服务配置中),将日志目录设置为/acs/log达到日志持久化,保存在ECS中。当然也可以在服务-配置管理-volume配置中添加其他的挂载卷

参考:http://dockone.io/article/783

 

2、EWS运行目录说明

1)添加主机到资源池时,会在主机上创建/acs目录,docker容器挂载出来的数据会放在这里

2)EWS指定了5个固定的volume目录

对应关系详见:https://open.taobao.com/doc.htm?docId=104186&docType=1&treeId=117

/acs/code目录,用户上传或编译后的代码最终解压到这个目录

/acs/log目录,如没有特殊指定,使用官方镜像的EWS服务中配置管理中,应用日志(如java应用catalina.log,localhost.log application.log)会存在这里

 

3)除了这几个volume目录,容器中的/acs/user目录,存放用户应用运行所需的程序如jdk,tomcat,php,nginx等

最佳实践

1.想找容器中java的启动脚本参数?/acs/user/tomcat/bin/catalina.sh

2.想找容器中nginx的启动脚本和配置?

3.想找容器中php的配置?/acs/user/script/tpl,/acs/user/php/extensions

当容器中运行的应用出现问题,或者部署出现问题,那你就应该在这些地方去排查问题了:

/acs/log/(查看应用日志),/acs/code(查看代码是否符合预期),/acs/user/(一些特殊需求,比如想自己修改jvm参数,然后重启容器中的java应用)

 

4)/acs/bin目录,官方镜像容器的启动脚本start文件

如果需要临时修改容器的配置并启动,如tomcat(/acs/user/tomcat/),修改后执行start文件即可。

 

3、登录容器内

1、EWS服务页面选择相应的容器webssh进入

2、登录ECS主机:docker exec -it 容器id /bin/bash

 

4、Docker常用指令

docker info,查看docker相关信息,版本,存储引擎,操作系统内核

docker ps [-as] 查看容器运行状态;-a查看所有;-s查看容器占用空间

docker images, 查看所有镜像

docker rmi 镜像id,删除镜像

docker stop 容器id,停止容器

docker rm 容器id,删除容器

docker inspect 容器id|镜像,查看容器和镜像的元信息

docker exec -it 容器id /bin/bash,在容器中开启一个交互模式的终端

 

5、运行容器之后,主机上df -h有很多目录?

EWS目前帮助安装的docker版本是18.09.3,使用的overlay2存储引擎,每个启动容器时都会做这样的挂载,实际都存储在/docker/overlay2和/docker/containers下面。列表中一部分是由底层镜像,通过overlay文件系统挂载出来出来的工作目录;另外一部分是每个容器会挂载出一个shm共享内存的目录,供运行时使用内存。

参考:https://blog.csdn.net/zhonglinzhang/article/details/80970411

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部