一、准备工作
1.准备JDK环境包(1.7以上即可)
百度网盘:
——链接:https://pan.baidu.com/s/1O-Z3LPs58Eqoc22hva2Kyg
——提取码:sn1w
2.准备Tomcat安装包(7或者8)
百度网盘:
—— 链接:https://pan.baidu.com/s/1g7D-ph8_7dAL91_-QfSrFA
–——提取码:94b0
3.基础镜像拉取
docker pull ubuntu:16.04
拉取成功后执行docker images 查看镜像列表
docker images
镜像列表:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccCNFO0w-1594118549924)(C:\Users\TR\AppData\Roaming\Typora\typora-user-images\1594094726499.png)]
二、制作过程
1.创建工作目录
mkdir -p /opt/docker/biuld/tomcat7
2.进入工作目录
cd /opt/docker/biuld/tomcat7
3.将jdk和tomcat安装包放入tomcat7目录下
]
4.编写Dockerfile
vim Dockerfile
FROM ubuntu:16.04
MAINTAINER cc-man
#上传
ADD apache-tomcat-7.0.82.tar.gz /opt/tomcat
ADD jdk-7u80-linux-x64.tar.gz /opt/jdk
COPY /run.sh /root/run.sh
RUN chmod 777 /root/run.sh
#环境变量
ENV JAVA_HOME=/opt/jdk/jdk1.7.0_80/jre
ENV PATH=:$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
ENTRYPOINT ["/root/run.sh"]
注意:(将tomcat和jdk版本替换成你的版本)
5.编写run.sh启动脚本
vim run.sh
#!/bin/bash
sh/opt/tomcat/apache-tomcat7.0.82/bin/catalina.sh run
注意: 将tomcat版本替换成你的版本
6.生成镜像
docker build -t my_tomcat:7.0 .
7.查看新生成的镜像
docker images
![img](file:///C:\Users\TR\AppData\Roaming\Tencent\Users\1677138238\QQ\WinTemp\RichOle\9PH{~22DLEBIS C 0 C0 C0Y}PQF8.png)
8.运行容器
docker run -d --name my_tomcat -p 8080:8080 my_tomcat:7.0
9.查看运行容器
docker ps
10.Web访问Tomcat(ip+端口)
三、监控docker的脚本
#!/usr/bin/env python
import os
def docker_status_discovery(docker_status_finder):
for containerid in docker_status_finder.readlines():
if containerid=='cli\n':
os.system('echo "hyperledger/fabric-peer Exited"|mail -s "Docker Exited" "***********@163.com" ')
return
if __name__=="__main__":
docker_status_finder = os.popen("""sudo docker ps -a |grep 'Exited'|awk {'print $NF'} """)
docker_status_discovery(docker_status_finder
)
四、docker的cpu监控脚本
#!/usr/bin/env python
import docker
import sys
import subprocess
import os
def check_container_status(container_name,collect_item):
#docker_client = docker_client.containers.get(container_name)
container_collect=docker_client.containers.get(container_name).stats(stream=True)
old_result=eval(container_collect.next())
new_result=eval(container_collect.next())
container_collect.close()
if collect_item == 'cpu_percent':
cpu_total_usage=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage']
cpu_system_uasge=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage']
cpu_num=len(old_result['cpu_stats']['cpu_usage']['percpu_usage'])
result=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2)
elif collect_item == 'mem_percent':
mem_usage=new_result['memory_stats']['usage']
mem_limit=new_result['memory_stats']['limit']
result=round(float(mem_usage)/float(mem_limit)*100.0,2)
return result
if __name__ == "__main__":
docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='1.27')
container_name=sys.argv[1]
collect_item=sys.argv[2]
print check_container_status(container_name,collect_item)