shell - Docker 容器需要很长时间才能通过 shell 脚本启动
问题描述
我是 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
我不明白为什么它闪烁而不执行。
解决方案
我通过使用下面的这个命令自己解决了这个问题
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
推荐阅读
- google-cloud-platform - 如何更新/刷新虚拟机的谷歌云 shell 输出?
- oauth-2.0 - 我可以像查看 Bearer 令牌中的内容一样解码授权代码吗?
- c# - 通过 Youtube Data API 上传视频时,Videos.Insert 中参数 baseUri 的 Exeption System.ArgumentNullException
- django - 如何跟踪循环导入错误 Django 从未解决
- php - PHP中5个条件的if-else语句
- c - 我在哪里可以找到真正的 memcpy() 实现?
- python - 按要合并的模式选择特定的 csv 文件
- python - 将值附加到python中嵌套字典内的列表
- python - 修复 LineCollections 的 Matplotlib 3D 绘图中的 Zorder 参数序列
- jquery - 打开没有弹出窗口阻止程序显示 jquery 的新选项卡