容量の確認
docker system df
tag
様々なパッケージ等が含まれていればいるほど、サイズも多くなる。
以下nodejs
を例にその大小関係を上から小さい順。
alpine `node:<version>-alpine`
slim `node:<version>-slim`
buster(bullseye) `node:<version>-buster` or `node:<version>-bullseye`
standard(latest) `node:<version>` or `node:latest`
standard
とalpine
は1/9程サイズが異なった。
参考:
イメージ
作成
docker build -t <imageName> .
-t
オプションはタグ(tag)を意味する
削除
# 現在使用されていないイメージの削除
$ docker image prune
# すべてのイメージを抹消
$ docker image prune -a
確認
docker image ls <imageName>
コンテナ
削除
# 現在使用されていないコンテナの削除
$ docker container prune -f
# すべてのコンテナを抹消
$ docker container prune
停止
docker stop `docker container ls -lq`
docker kill `docker container ls -lq`
確認
docker ps
ボリューム
# 確認
$ docker volume ls
# 個別に削除
$ docker volume rm volume_name
# 使用していないものすべて
$ docker volume prune -f
# 全て削除
$ docker volume rm $(docker volume ls -qf dangling=true)
ネットワーク
# 確認
$ docker network ls
# 削除
$ docker network prune -f
全てを一括削除
# イメージ、コンテナ、ネットワーク
$ docker system prune
# volumeも含める場合
$ docker system prune --volumes
キャッシュの削除
$ docker builder prune -f
Dockerfile
共通
RUN
RUN
命令は、Dockerイメージのビルドプロセス中に実行される命令。
RUN
はイメージを作成する際に、必要なパッケージのインストール、ファイルのコピー、環境設定など、イメージ内で実行すべきコマンドを指定するのに使用される。
それぞれの RUN
命令が実行されると、新しいレイヤーがイメージに追加され、その結果が次のステップに引き継がれる。
つまり、RUN
はイメージの構築過程で使われ、その結果はイメージに永続化される。
CMD
CMD
命令は、Dockerコンテナが実行される際にデフォルトで実行されるコマンドを指定する。
コンテナのスタートアップ時に実行されるコマンドを定義し、主にコンテナの主要な実行プロセス(エントリーポイント)を設定するのに使用される。
CMD
はイメージのビルド時には実行されず、コンテナが起動するときのみ実行される。また、CMD
で指定されたコマンドは、コンテナ起動時にコマンドラインから指定されたコマンドによってオーバーライドされる可能性がある。
go
RUN go install github.com/cosmtrek/air@v0.10.2
air
というライブリロードツールを特定のバージョン(v0.10.2)でインストール。
air
はGo言語で書かれたアプリケーションの開発中にソースコードの変更を検知し、自動的にアプリケーションを再ビルドして再起動するツール。
開発者はソースコードを編集する度に手動でビルドや起動を行う必要がなく、効率的に開発を進めることができる。
CMD ["air"]
コンテナが起動すると自動的に air
が実行され、ソースコードの変更を監視し始める。
コンテナ内でアプリケーションを開発している間、連続して変更を適用しテストすることが容易になります。