Docker

HOME > Docker

Docker:記事リスト

Dockerのカテゴリーには以下の記事がリストされています。

docker buildのキャッシュと.dockerignore設計|Dockerfileの命令順序でCIビルドを高速化する実践手順

「docker build が遅すぎる。ソースコードを1行書き換えただけで全依存パッケージを再インストールしている」——この問題、CIパイプラインを組んだことがある方なら必ず直面します。

原因の多くは Dockerfile の命令順序の誤りと .dockerignore ファイルの未設定にあります。Dockerのビルドキャッシュを正しく活用すると、変更のないレイヤーは再利用されるため、5分かかっていたビルドが30秒以下になることも珍しくありません。

この記事では、Dockerのビルドキャッシュの仕組みから命令順序の最適化、.dockerignoreの設計、BuildKitのキャッシュマウントまで、実務で即使えるノウハウを順番に解説します。RHEL 9.4 / Ubuntu 24.04 LTS + Docker 26.x で動作確認済みです。

この記事のポイント

・Dockerのキャッシュは命令が変わった行以降すべて無効化される
・変更頻度の低い命令(apt install)を上に、ソースのCOPYを最後に書く
・.dockerignoreでビルドコンテキストを削減し転送時間を大幅に短縮できる
・BuildKitの--mount=type=cacheでパッケージキャッシュを永続化できる

続きを読む "docker buildのキャッシュと.dockerignore設計|Dockerfileの命令順序でCIビルドを高速化する実践手順"

Docker Composeのdepends_onとHEALTHCHECK|サービス起動順序を確実に制御する設計パターン

「docker-compose up を実行したのに、アプリコンテナがDB接続エラーで即座に落ちる」——この問題の原因は、DBコンテナのプロセスが起動しても「接続を受け付ける準備」が整う前にアプリが接続を試みることです。

Docker Compose の depends_oncondition: service_healthy を指定し、Dockerfile の HEALTHCHECK 命令を組み合わせると、DBが完全に起動するまでアプリコンテナの起動を遅らせることができます。

この記事では、depends_on の3種類のconditionとHEALTHCHECKの設定方法を実践例付きで解説します。RHEL 9.4 / Ubuntu 24.04 LTS + Docker 26.x / Compose v2.x で動作確認済みです。

この記事のポイント

・depends_on の condition: service_healthy でDBの準備完了を待ってからアプリを起動できる
・HEALTHCHECK 命令でコンテナの「準備完了」基準を定義する(Dockerfile / Composeファイル)
・docker inspect コマンドでヘルスチェック状態とログを確認してデバッグできる
・起動順序制御だけでなくアプリ側の接続リトライ実装が運用上の鉄則

続きを読む "Docker Composeのdepends_onとHEALTHCHECK|サービス起動順序を確実に制御する設計パターン"

DockerfileのENTRYPOINTとCMDを正しく使い分ける方法|シェル形式・exec形式の設計指針と実践例

「Dockerfileに ENTRYPOINT と CMD を両方書いたのに、docker run で引数を渡しても動きが変わらない」
「ENTRYPOINT と CMD の違いを調べても同じことしか書いていなくて、結局どちらを使えばいいかわからない」

Dockerfile を書き始めた段階で多くの人がつまずくのが、ENTRYPOINT と CMD の使い分けです。
この記事では、2つの命令の明確な違い、「シェル形式」と「exec形式」の落とし穴、そして実務で役立つ設計パターンを実際のコマンド実行例とともに解説します。
動作確認は Rocky Linux 9 / Ubuntu 24.04 LTS + Docker 26.x で行っています。

この記事のポイント

・ENTRYPOINT は「コンテナが必ず実行するプログラム」を固定する命令
・CMD は「ENTRYPOINT へのデフォルト引数」または単独のデフォルトコマンド
・exec形式(JSON配列)を使わないとシグナルが届かず docker stop が10秒かかる
・両方を組み合わせると「固定コマンド+上書き可能な引数」の柔軟な設計が実現できる

続きを読む "DockerfileのENTRYPOINTとCMDを正しく使い分ける方法|シェル形式・exec形式の設計指針と実践例"

docker execコマンドでコンテナ内を調査・デバッグする方法|docker logs・docker inspectの実践例も

「docker runしたコンテナが起動しているはずなのに、アプリが動かない」
そんな場面で真っ先に使うべきツールが docker exec・docker logs・docker inspect の3つです。

この記事では、Rocky Linux 9 / Ubuntu 24.04 LTS の実機で確認した手順をもとに、Dockerコンテナのデバッグに欠かせない3コマンドの実践的な使い方を解説します。
コンテナ内部への入り方から、ログの絞り込み、設定値の取り出しまで、障害切り分けの現場でそのまま使える内容を網羅しています。

この記事のポイント

・docker exec -it でコンテナ内のシェルにインタラクティブに接続できる
・docker logs -f でリアルタイムのコンテナログをtail感覚で追える
・docker inspect --format でIPアドレスや設定値を1行で取り出せる
・起動に失敗したコンテナはdocker startしてからexecでデバッグする

続きを読む "docker execコマンドでコンテナ内を調査・デバッグする方法|docker logs・docker inspectの実践例も"

Dockerのネットワーク設計入門|コンテナ間通信とbridge・host・noneの使い分け

「複数のコンテナを起動したのに、コンテナ同士が通信できない」
「Docker Composeで組んだWebとDBがつながらず、名前解決でエラーが出る」

こういったトラブルは、Dockerネットワークの仕組みを理解していないことが原因のほとんどです。

Dockerはコンテナ起動時に自動でネットワークへ接続しますが、デフォルトのbridgeネットワークでは「コンテナ名での名前解決」ができません。ここで詰まるエンジニアは非常に多い。

この記事では、Dockerの4つのネットワークモード(bridge・ユーザー定義bridge・host・none)の違いと使い分け、コンテナ間通信の実践手順、Docker Composeでのネットワーク分離設計を、Ubuntu 24.04 LTS / RHEL 9.4の実機出力を交えて解説します。

この記事のポイント

・Dockerデフォルトのbridgeではコンテナ名での名前解決ができない
・コンテナ間を名前で繋ぐには「ユーザー定義bridgeネットワーク」が必須
・Docker Composeは自動でユーザー定義ネットワークを作成しサービス名で通信できる
・本番環境ではfrontend/backendを別ネットワークに分離するのが基本設計

続きを読む "Dockerのネットワーク設計入門|コンテナ間通信とbridge・host・noneの使い分け"

Dockerボリュームとバインドマウントでデータを永続化する方法|コンテナを消してもデータを守る設計

「docker rm でコンテナを削除したら、データベースのデータも全部消えた」
そんな失敗、Dockerを使い始めて一度は経験するはずです。コンテナはプロセスと同じで、停止・削除すると内部に書き込んだデータはすべて消えます。

この記事では、Dockerのボリューム(docker volume)とバインドマウントの仕組みを基礎から解説し、コンテナが消えてもデータを安全に永続化するための実践的な設計手順を紹介します。
Docker Composeでのvolumes定義まで、実際のサーバー出力例を交えて説明します。

動作確認環境: Rocky Linux 9.4 / Ubuntu 24.04 LTS(Docker Engine 26.x・Docker Compose Plugin v2.27)

この記事のポイント

・コンテナのデータはデフォルトで揮発性。永続化にはvolumeかバインドマウントを使う
・docker volume createで名前付きボリュームを作り、-vオプションでコンテナに接続する
・バインドマウントはホストのディレクトリを直接マウントし、開発環境のソース共有に向く
・Docker ComposeではvolumesセクションでDB・アプリのデータを永続化して管理する

続きを読む "Dockerボリュームとバインドマウントでデータを永続化する方法|コンテナを消してもデータを守る設計"

DockerfileのマルチステージビルドとCompose設計|本番イメージの軽量化・セキュリティ・環境分離の実践手順

「Dockerfileを書いてみたけど、イメージが500MBを超えている」「開発環境と本番環境でDockerfileを使い分けたい」
そう感じたことはないでしょうか。

Dockerfileの基本構文は比較的すぐ覚えられますが、本番環境で安全に使えるイメージを作るとなると話が変わります。サイズの肥大化、rootで動くコンテナ、開発用の認証情報が本番イメージに残ったまま——こうした問題は、設計をきちんと理解していないと見過ごしがちです。

この記事では、マルチステージビルドを中心に、本番向けDockerfileの設計と、Docker Composeを使った環境分離の実践手順を解説します。.envファイルによる認証情報の安全な管理、override構成を使った環境切り替えまで、「なぜそう書くのか」という設計の意図まで踏み込みます。

この記事のポイント

・マルチステージビルドで本番イメージを1/10以下に軽量化できる
・Dockerfile設計の鉄則はCOPY --from でビルド成果物だけを本番に持ち込むこと
・コンテナをroot以外のユーザーで動かすことがセキュリティの最低ライン
・.envファイルは自動読み込みされるがGitに含めてはいけない——認証情報はファイルで分離する
・Docker Composeのoverride構成で開発・本番の環境差分をコードで管理する

続きを読む "DockerfileのマルチステージビルドとCompose設計|本番イメージの軽量化・セキュリティ・環境分離の実践手順"

OllamaをDockerコンテナで運用する方法|docker-compose.ymlとGPU設定で本番環境に安定デプロイする

「Ollamaをサーバーに直接インストールしたら依存ライブラリが競合して環境が壊れた」
「チームメンバーのUbuntuバージョンが違うせいで、同じ手順を実行しても動かない」

そんな悩みを抱えるインフラエンジニアやサーバー管理者は少なくない。Ollamaは単体でも動作するが、本番運用を見据えるとDockerコンテナ化が断然有利だ。この記事では、docker-compose.ymlを使ってOllamaをコンテナとして立ち上げ、GPUパススルー設定・リソース制限・Open WebUI連携・ヘルスチェック・日常運用コマンドまでをステップ順に解説する。さらに、docker-compose.override.ymlを活用した開発・本番設定の分離パターンも紹介する。Ubuntu Server 22.04 LTS + NVIDIA GPUの構成を基本とするが、GPUなしのCPU運用でも手順はほぼ同じだ。

この記事のポイント

・docker-compose.ymlとNVIDIA Container Toolkitで再現性のある運用環境を構築できる
・GPUパススルー・ヘルスチェック・環境変数の外部化で本番品質の構成に仕上げる手順を解説
・docker-compose.override.ymlで開発・本番設定を分離し、本番への誤設定混入を防ぐ方法も紹介
・deploy.resources.limitsでCPU/メモリを制限し、ホスト全体の安定性を守る方法も紹介
・docker statsで実消費量を把握してから制限値を設定する手順を解説
・Open WebUIをcomposeに同梱することでチーム共有UIをワンコマンドで起動できる
・よくあるコンテナ間通信エラーとGPU認識エラーの対処法をまとめて紹介


OllamaをDockerコンテナで運用する方法|docker-compose.ymlとGPU設定で本番環境に安定デプロイする

続きを読む "OllamaをDockerコンテナで運用する方法|docker-compose.ymlとGPU設定で本番環境に安定デプロイする"

コンテナとは何か|Dockerで理解する仮想マシンとの違いと利点

「コンテナって仮想マシンと何が違うの?」「Dockerが話題になっているけど、自分のPCに入れても大丈夫なの?」
コンテナという言葉はよく耳にするのに、どうもしっくり来ない。仮想マシンとの違いを聞いてもピンとこない。そんな方が多いのではないでしょうか。

この記事では、コンテナと仮想マシンの根本的な違いから、Dockerが実現する軽量・高速な仕組み、DockerfileやDocker Composeを使った実践的な活用方法まで解説します。「コンテナ docker」を調べている完全初心者の方でも、読み終わった後には「なぜエンジニアがDockerを使うのか」が腑に落ちるように構成しています。

この記事のポイント

・コンテナはOSカーネルを共有する軽量な実行環境で、VMより数十倍速く起動する
・Dockerはコンテナを手軽に使うためのツール群(CLI・デーモン・イメージ管理)
・Dockerfileで環境を「コード化」すれば、誰でも同じ環境を再現できる
・Docker Composeを使えば複数コンテナをyaml1ファイルで一括管理できる

続きを読む "コンテナとは何か|Dockerで理解する仮想マシンとの違いと利点"

dockerコマンドの使い方|コンテナ起動・停止・イメージ管理の実践例

「Dockerを使ってみたいけど、どこから手をつけたらいいかわからない」
「コンテナを起動したはいいけど、止め方や削除の方法がよくわからない」

Linuxサーバーを触り始めてしばらく経つと、必ずDockerに出会います。
開発環境の構築、アプリのデプロイ、CI/CDの整備——現場のあらゆる場面でDockerが使われるようになっています。

この記事では、Dockerコマンドの実践的な使い方を、RHEL 9.4 / Ubuntu 24.04 LTSでの動作確認済みの手順で解説します。
インストールから、イメージの取得・コンテナの起動・停止・削除・内部操作、さらにDocker Composeによる複数コンテナ管理まで、現場でよく使う操作を一通りカバーします。

この記事のポイント

・docker run でコンテナを起動、docker stop/rm で停止・削除できる
・docker ps -a で起動中・停止中の全コンテナを一覧表示できる
・docker exec -it でコンテナ内部に入りコマンド実行が可能
・Docker Composeを使えば複数コンテナをymlファイル1つで一括管理できる

続きを読む "dockerコマンドの使い方|コンテナ起動・停止・イメージ管理の実践例"

netBIOS(Network Basic Input∕Output System)

「Windowsのファイル共有がLinuxから見えない」「nmblookupでNetBIOS名を解決しようとしたら何も返ってこない」

このようなトラブルの根本には、NetBIOSの仕組みを理解していないことがあります。NetBIOS(Network Basic Input/Output System)は1983年にIBMが開発し、Microsoftが採用した分散アプリケーション向けのプログラミングインターフェイスです。今なおWindowsのファイル共有(SMB/CIFS)の基盤として現役で動いています。

この記事では、NetBIOSの基本的な仕組みからLinuxでNetBIOS名前解決を実践するコマンド操作まで、実機の出力例を交えながら解説します。

この記事のポイント

・NetBIOSはWindowsネットワークの基盤。SMB/CIFSによるファイル共有で今も現役で動いている
・NetBIOS名前解決にはブロードキャスト・WINSサーバー・lmhostsの3方式がある
・LinuxからはnmblookupコマンドでNetBIOSホスト名の照会・名前解決ができる
・ポート137/138(UDP)と139(TCP)を理解することがトラブル対応の第一歩になる

続きを読む "netBIOS(Network Basic Input∕Output System)"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録