在 linux 的 sh 中执行 docker 命令不执行?

创建了一个自动任务,自动执行 sh 脚本,sh 内容如下:

#/bin/bash
name=`date +%Y%m%d`_`date +%H%M%S`
mkdir -p /home/mongo/cron/bak/$name
docker exec -it mongo mongodump -h localhost -d dbname -o /home/mongo/cron/db -u username  -p password

文件在 /home/mongo/cron/run.sh
已经执行了 chmod u+x run.sh 为sh脚本文件添加执行权限

现在问题是:创建文件夹有效,说明脚本有执行,但最后一句,docker 命令没执行或者执行不成功

想过问题原因:

1: 权限问题,已经给了执行权限了
2:docker 命令错误,但是单独执行是没有问题的

原因到底在哪里呢,求大佬指点

大哥,你的问题解决了吗? 我现在也遇到这个问题了。

#!/bin/bash
echo "****************publish start... ****************"
# 定义变量
containId=`docker ps -aq --filter "ancestor=mytestapi:v1"`
image_name='mytestapi:v1'
contain_name='yohao/corewebpi'

echo current containId ... $containId
# docker 集成命令,删除镜像,容器 在重新生成
docker stop $containId
#  docker rmi  $containId
#  docker build -t $image_name:v1 .
#  docker run --name $contain_name -d -p 9001:80  mytestapi:v1
echo "****************publish end... ****************"

代码如上,会抛出一个错误,No such container

执行脚本后的信息可以已贴出来一下勒

docker 执行需要root权限,确认权限分配是否正确

1、脚本中最好先引入环境变量,然后再执行
source ~/.bash_profile
source /etc/profile

2、在脚本中加一些echo输出和if判断来确认是做后一行docker命令到底是执行失败了还是压根没执行

理论上这个run.sh是可以运行的,那确认一下/home/mongo/cron/db目录是否存在,看你上文创建的目录是/home/mongo/cron/bak/$name,我理解你是要输出的后者目录下吧

https://www.cnblogs.com/dadream/p/9506038.html