ProgramingLake

ナレッジ置き場

(コマンド)Docker

Dockerfile における「ENTRYPOINT」は必ず実行
Dockerfile内にこのように書かれていたら、
ENTRYPOINT ["python3.6"]
docker runコマンドで、こうすればコンテナ起動と同時に実行される
(※batchはイメージ名)
docker run -it --rm --network localnet \
-e ENVIROMENT_NAME=localhost \
batch function_xxxx.py
空き容量確保
docker system prune -f
コンテナ全停止
docker stop $(docker ps -q)
コンテナ全削除
docker container prune
volume
docker volumeを確認
docker volume ls
 

volumeの実態を確認
docker volume inspect mongo-express_mongodb-data

但し、そのpathはMac上には存在しない
"Docker for MacのDocker EngineはVM(Virtual Machine)の上で動いているので、MountpointはローカルのMacのPATHじゃなくて、VM上のPATH"

これでVMに入れる(この中にvolumeの実態が入っている)
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

詳しくはこちら
https://note.com/w0o0ps/n/n9bc1bcd9fa59

 依存関係のあるイメージファイルを検索
for i in $(docker images -q)
do
docker history $i | grep -q "container_id" && echo $i
done | sort -u
 
(/dev/sda1 の中がいっぱいの時は効果覿面)
activeでないvolumesを確認する
docker system df
dangling volumeのリストを確認
docker volume ls -q -f dangling=true
参照されてないvolumesを削除
docker volume rm `docker volume ls -q -f dangling=true`
不要な(none)imageを削除(対象確認)
docker images -f "dangling=true"
不要な(none)imageを削除(一括削除)
docker rmi $(docker images -f "dangling=true" -q)
docker logの出力先確認
docker inspect container_id | grep -i log
ログファイルの中身をクリア(例)
sudo truncate /var/lib/docker/containers/.../[log_file_name.log] --size 0
 その他コマンド
毎回コンテナIDを確認せずにコンテナに入る
docker exec -it $(docker ps -aq -f name=mongodb) bash
 
コンテナ名にsalesが含まれるコンテナを停止
docker stop $(docker ps -aq -f name=sales)
 
コンテナ名にsalesが含まれるコンテナを開始
docker start $(docker ps -aq -f name=sales)
 
コンテナ名にsalesが含まれるコンテナを削除
docker rm $(docker ps -aq -f name=sales)
 
Dockerfileをbuildしていると、<none>が残る
確認
docker images | grep none
 
<none>の正体とは?
同じ名前のイメージを作り直すと出来上がる。
Dockerでは異なるイメージに同じイメージ名を付けられないので、
古いほうのイメージはイメージ名が取り除かれて<none>:<none>になる。
 
<none>のイメージを一括削除
docker images | grep none | awk '{print $3}' | xargs docker rmi
 
発生しうるエラー
JavaScript heap out of memory
これをやってからもう一度docker-compose upで通った
export NODE_OPTIONS=--max_old_space_size=4096
 
イメージファイル 全削除
docker rmi $(docker images -a -aq)