1、首先需要了解docker 的复制命令,有两种 一种是从容器复制到宿主机,另一种是从宿主机里复制到容器。
1、容器->宿主机 docker cp container:/tmp/xxxx.log /tmp
2、宿主机->容器:docker cp /tmp/xxxx.log container:/tmp
2、找到需要复制的容器ID,可以使用 docker ps | grep 'xxxxx' | awk '{print $1}',找到这个值。例如:471aecda9acf, awk '{print $1}' 是打印第一列的值
1、判断是否启动docker 服务 systemctl status docker | grep running
2、查看当前文件的路径 `pwd `
3、找到要复制的容器的ID docker ps | grep 'xl-job-executor' | awk '{print $1}
4、判断容器是否存在 if [ -n "$container" ]; then
5、判断宿主机脚本是否存在 if test -e ${path_dir}/$1; then
6、复制文件到docker容器 docker cp ${path_dir}/$1 $container:/usr/software/check
7、复制成功打印结果 echo "copy $1 is OK, $container"
#!/bin/bash
:<<EOF
1、查看docker状态
2、复制当前文件到docker容器
EOF
status=$(systemctl status docker | grep running)
if [[ $? == 0 ]]; then
path_dir=$(pwd)
container=$(docker ps | grep 'xl-job-executor' | awk '{print $1}')
if [ -n "$container" ]; then
if test -e ${path_dir}/$1; then
docker cp ${path_dir}/$1 $container:/usr/software/check
if [[ $? == 0 ]]; then
echo "+++--------------------------------------+++"
echo "copy $1 is OK, $container"
else
echo "copy Failed "
fi
else
echo "$1 file not found"
fi
else
echo "xl-job-executor* not found container"
fi
else
echo 'docker is not running, please start docker'
fi
注:$? 可使用$? 获取上次执行命令的结果,0执行成功,且有返回值,其它执行失败
test -e /file 判断文件是否存
-n "$container" 可以判断字符串是否为空
4、上述代码只是复制脚本的一个快捷方式,但是也只能复制一个脚本。还需要使用以下代码,可实行批量复制.docker_cp.sh一定要加入到环境变量才可以这样执行。
for file in `ls deploy_check_pg_*`;do docker_cp.sh $file; done;
因篇幅问题不能全部显示,请点此查看更多更全内容