Hyperledger Application 개발 도중 다음과 같은 이슈를 만났다.
Hyperledger 노드에 여러가지 cli 명령어를 주기위해
hyperledger/fabric-tools 이미지를 이용해 컨테이너를 만드는데,
사용중인 에이전트 프로그램에서 이 tools 컨테이너가 여러개 생성되는 이슈가 있었고,
Application을 개발하면서 자주보는 이슈였다.
그래서 항상 하나하나 지워줘야 했는데.
여기서 모든 컨테이너를 지우는게 아니라,
가장 최근에 생성된 컨테이너를 제외하고 지워야 했다.
어느날 똑같은 20~30개의 컨테이너가 올라오고, 하나하나 지우긴 너무 힘들 것 같아
쉘 스크립트를 작성했다.
쨌던 이게 중요한게 아니고, !
(1) tools 이름을 가진 모든 컨테이너의 ID를 조회
(2) (1)의 조회된 리스트에 시간순으로 정렬
(3) (2)의 리스트는 오래전에 올라온 컨테이너가 앞에있고, 최근으로 갈수록 뒤에 있을 것 이다.
(4) 반복문을 돌면서 맨 마지막 컨테이너의 ID를 제외하고 삭제!
array=( $(docker ps -qf name=tools | tac) )
arrayLength=${#array[@]}
for((i=0; i< $arrayLength; i++)); do
echo "rm container : " + ${array[i]}
docker rm -f ${array[i]}
done
if [ $i -eq `expr $arrayLength - 1` ];then
exit 0
fi
#!/bin/bash
array=( $(docker ps -qf name=tools | tac) )
arrayLength=${#array[@]}
echo "tools length : $arrayLength"
for((i=0; i< $arrayLength; i++)); do
if [ $i -eq `expr $arrayLength - 1` ];then
exit 0
fi
echo "rm container : " + ${array[i]}
docker rm -f ${array[i]}
done
도커 명령어를 잘 몰라
array=( $(docker ps -qf name=tools | tac) )
이런식으로 리스트를 불러왔지만..
더 효율적인 방법이 분명히 많이 있을 것 같다.
알려주시면 감사하겠습니다 ㅎㅎ