🐳 Docker初心者必見!環境構築と便利コマンド集まとめ🔰
はじめに
こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。
開発環境のスムーズな構築と、よく使用するDockerコマンドをまとめました。
前提
my-app-container
は実際のコンテナ名に置き換えて使用してください。
環境構築
データベースの作成
docker compose run --entrypoint 'bundle exec rails db:create' my-app-container
マイグレーション
docker compose run --rm my-app-container bundle exec rake db:migrate
マイグレーションファイルを適用して、データベースの構造を更新します。
コンテナに入る
docker compose run my-app-container ash
bash
ではなくash
を使用しました。
コンテナ内でDBマイグレーションの確認
コンテナにログインした状態で実行
bundle exec rails db:migrate:status
コンテナの起動
docker compose up -d
ビルド
イメージのビルド
docker build
単一のDockerfileに基づいてイメージをビルドします。
docker build .
CurrentディレクトリでDockerfileからイメージを生成します。
docker compose build
docker-compose.yml
ファイルに基づいて複数のサービスのためのDockerイメージを一括でビルドするためのものです。(MySQLなどデータベースなどの情報を含む場合もあります。)
キャッシュを使用せずにイメージをビルド
docker compose build --no-cache
イメージ一覧表示
docker images
Docker Composeでイメージ一覧表示
docker compose images
実行中のコンテナのリスト表示
推奨
docker container ls
または
docker ps
コンテナの停止
docker stop $(docker ps -a -q)
コンテナ内でBashを実行
docker compose run <Container名> bash
ファイル一覧表示
ls -l
コンテナ内のディレクトリやファイルの詳細な一覧を表示します。
コンテナの削除
docker rm <ContainerID>
seedデータ作成
コンテナにログインして実行
docker compose run my-app-container ash
bundle exec rake db:seed
コンテナにログインせずに実行
docker run --rm my-app-container bundle exec rake db:seed
--rm
オプションを使用するメリットはコマンド実行後に自動的にコンテナを削除することです。これにより、不要なコンテナが溜まらずディスクスペースを節約できます。
また、後片付けの手間が省ける点も嬉しいです。
デバッグ
コンテナ内のログを見るだけ
docker compose logs -f my-app-container
-f(follow)
オプションによって、コンテナのログをリアルタイムで確認するためのコマンドです。
コンテナ内に入り込んで操作もできる
docker attach my-app-container
binding.pry
を使用してデバッグも可能です。
不要なデータの削除
ディスク使用量の確認
# rootディレクトリで実行
du -h | grep "G\t"
-
du
: 「disk usage」の略 -
-h
: 「human-readable」の略(人間に読みやすい形式で表示) -
grep
: 指定したパターンに一致したものを表示
ストレージ容量の確認
docker system df
未使用のオブジェクトの削除
docker system prune
docker container prune
使用していないDockerオブジェクト(コンテナ、イメージ、ボリューム、ネットワーク)を一括で削除するコマンドです。
イメージの削除
docker rmi <ImageID>
コンテナの削除
docker rm <ContainerID>
ダングリング(<none>)イメージの削除
docker rmi `docker images -f "dangling=true" -q`
以下のエラーが表示された際には、コンテナを削除して対応
Error response from daemon: conflict: unable to delete 043qa03bfa787 (must be forced) - image is being used by stopped container
docker rm ContainerID
再度、以下を実行
docker rmi `docker images -f "dangling=true" -q`
おまけ
ローカル環境からDockerコンテナにファイルをコピーするプロセス
- ローカルでの開発: 開発者はローカル環境でコードや設定ファイルを作成します。
- Dockerイメージの作成:
Dockerfile
を使用して、これらのファイルを含むDockerイメージを作成します。 - コンテナの起動: 作成されたDockerイメージを使用してコンテナを起動します。起動時に
Entrypoint.sh
が実行され、アプリケーションが開始されます。
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion