记一次docker创建centos容器跑python任务案例
1.需求描述:
用docker起一个centos容器,在容器中安装python3,并定时执行脚本,将日志输出到某文件。将容器打成镜像导出,客户需将镜像导入。
2.任务分解:
①docker中使用crond
②python执行脚本并输出日志
③将容器打成镜像
3.具体操作:
①启动一个带有python的centos镜像为基础容器
docker run -it centos7:v8 /bin/bash
②将脚本拷入容器
docker cp test.tar musing_shirley:/root
test.tar 文件 musing_shirley 容器名称 :/root 目标目录
③进入容器
docker exec -it 6102977fb486 /bin/bash
6102977fb486 容器id
④编写执行任务脚本
#!/bin/bash
echo `date +"%Y-%m-%d %H:%M:%S"` begin >> /root/a.log
nohup python3 /root/green-cloud/industry_calculator_month.py >> /root/a.log 2>&1 &
echo `date +"%Y-%m-%d %H:%M:%S"` end >> /root/a.log
⑤创建crond任务
crontab命令:
如果希望添加、删除或编辑crontab文件中的条目,而E D I TO R环境变量又设置为v i,那么就可以用v i来编辑crontab文件,相应的命令为:
crontab -e
*/2 * * * * /bin/sh /root/test.sh
列出crontab文件
crontab -l
[root@6102977fb486 ~]# crontab -l
*/2 * * * * /bin/sh /root/test.sh
要删除crontab文件,可以用:
crontab -r
⑥启动任务
/usr/sbin/crond -s
查看
ps -ef | grep crond
root 13441 0 0 08:46 ? 00:00:00 /usr/sbin/crond -s
root 13443 10225 0 08:46 pts/6 00:00:00 grep --color=auto crond
⑦将此时容器状态打成镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
- -a :提交的镜像作者;
- -c :使用Dockerfile指令来创建镜像;
- -m :提交时的说明文字;
- -p :在commit时,将容器暂停。
docker commit -m "yhht" -a "for green-cloud" 6102977fb486 green-cloud
⑧导入导出镜像
导出:
如果要存出镜像到本地文件,可以使用docker save命令。例如,存出本地的ubuntu:14.04镜像为文件ubuntu_14.04.tar:
$ sudo docker save -o /home/user/images/ubuntu_14.04.tar ubuntu:14.04
导入:
可以使用docker load从存出的本地文件中再导入到本地镜像库,例如从文件ubuntu_14.04.tar导入镜像到本地镜像列表,如下所示:
$ docker load --input ubuntu_14.04.tar
$ docker load -i ubuntu_14.04.tar
或者
$ docker load < ubuntu_14.04.tar