Docker 容器需要很长时间才能通过 shell 脚本启动

Posted

技术标签:

【中文标题】Docker 容器需要很长时间才能通过 shell 脚本启动【英文标题】:Docker container takes long to start via shell scripting 【发布时间】:2018-11-19 18:25:24 【问题描述】:

我是 shell 脚本的新手,最近开始接触基本的。我已经编写了代码来检查我是否有 cassandra 节点,如果没有,它会给我是或否,然后执行一些命令。我的问题是我已经启动了 node1 并且我正在检查节点是否已经存在然后获取该容器的 id 并启动该容器。但是当我运行它时,它会获取容器的 id 并且需要很长时间并且永远不会启动。如果我在没有 shell 命令的情况下启动容器,它就会启动。但我想把它们放在壳里。

这是我的代码:

if sudo docker ps -a | grep -q 'node1';then
    sudo docker inspect --format=".Id" node1
read num    
sudo docker start num
elif sudo docker ps -a | grep -q 'node2';then
    sudo docker inspect --formar=".Id" node2
read Idnode2 
    sudo docker start Idnode2
else
    sudo docker run --name node1 -d -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.xx -p 7000:7000 cassandra:2
fi

输出:

./tet.sh
f1713abbee52ca465962ec53e97dde62058d37859005f77786db3e3eebe0086c
blinks forever after this

我不明白为什么它会闪烁而不执行。

【问题讨论】:

【参考方案1】:

我自己用下面这个命令解决了

if sudo docker ps -a | grep -q 'node1';then
    sudo docker inspect --format=".Id" node1    
    sudo docker start node1
elif sudo docker ps -a | grep -q 'node2';then
    sudo docker inspect --formar=".Id" node2
read Idnode2 
    sudo docker start Idnode2
else
    sudo docker run --name node1 -d -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.xx -p 7000:7000 cassandra:2
fi

【讨论】:

以上是关于Docker 容器需要很长时间才能通过 shell 脚本启动的主要内容,如果未能解决你的问题,请参考以下文章

通过 SSH 进行 git clone 需要很长时间才能完成

分享意图需要很长时间才能出现

为啥 azure 需要这么长时间才能创建 Windows 核心服务器容器实例?

从 IPersistMoniker 加载需要很长时间才能加载无法解析的 URL

拆分 MS Access 数据库需要很长时间才能打开 - 后端不断锁定和解锁

由于 .suo 文件,发布我的 Web 应用程序可能需要很长时间才能完成