AI Engineering Tools

プログラミング

Docker

Docker のイメージ、コンテナ、Dockerfile、Compose、ポート、ボリューム、ログ、よくある問題を整理した検索ガイドです。

33

基本概念

Docker

Docker

docker --version

意味

アプリケーションを隔離されたコンテナでパッケージ化および実行するためのツール。

使う場面

アプリケーションが、異なるマシンで同じOSパッケージ、ランタイム、および依存関係で実行されるようにする場合に利用します。

docker --version

依頼例

このプロジェクトが、Dockerで実行できるかどうかを説明してください。

基本概念

Docker daemon

Docker daemon

Docker デーモンに接続できません

意味

画像の構築とコンテナの実行を行うバックグラウンドサービス。

使う場面

Dockerコマンドが接続できない場合、Docker DesktopまたはDockerサービスが実行されていない可能性があります。

Docker デーモンに接続できません

依頼例

Dockerコマンドが、デーモンに接続できない理由を確認します。

基本概念

画像

Image

node:20-alpine

意味

コンテナを作成するために使用される、再利用可能なテンプレート。

使う場面

画像は、コンテナが開始するOS、ランタイム、ライブラリ、およびアプリケーションファイルを定義します。

node:20-alpine

依頼例

この Dockerfile が使用するベースイメージを教えてください。

基本概念

コンテナ

Container

docker ps

意味

イメージから作成された、実行中または停止中のインスタンス。

使う場面

アプリ、データベース、キャッシュ、またはワーカーを、隔離された環境で実行するために、コンテナを使用します。

docker ps

依頼例

実行中のコンテナをリストし、それぞれの機能について説明します。

基本概念

レジストリ

Registry

docker pull postgres:16

意味

Dockerイメージが保存され、ダウンロードされるサーバー。

使う場面

Docker Hub and private registries are used to share base images or deployable app images.

docker pull postgres:16

依頼例

このイメージはどこからダウンロードされるかを説明してください。

Dockerfile

Dockerfile

Dockerfile

Dockerfile

意味

Dockerイメージの構築方法を定義するファイル。

使う場面

依存関係のインストール、アプリケーションファイルのコピー、およびアプリケーションの起動コマンドの定義に使用します。

Dockerfile

依頼例

この Dockerfile を読み取り、ビルド手順を要約します。

Dockerfile

FROM

FROM

FROM node:20-alpine

意味

Dockerfileで、ベースイメージを選択する命令。

使う場面

OSのレイヤーの開始点、および多くの場合、ランタイムのバージョンを決定します。

注意

ベースイメージを変更すると、利用可能なコマンド、セキュリティアップデート、およびイメージサイズに影響を与える可能性があります。

FROM node:20-alpine

依頼例

この`FROM`イメージに含まれるものを説明してください。

Dockerfile

WORKDIR

WORKDIR

WORKDIR /app

意味

画像内のフォルダーを設定し、そのフォルダー内で後続のコマンドを実行します。

使う場面

COPY、RUN、およびCMDコマンドが、予測可能なアプリケーションフォルダから実行されるように使用します。

WORKDIR /app

依頼例

このDockerfileが、アプリケーションディレクトリとして使用するフォルダを説明してください。

Dockerfile

COPY

COPY

COPY package.json package-lock.json ./

意味

ビルドコンテキストからファイルをイメージにコピーします。

使う場面

依存関係ファイル、ソースコード、および静的アセットをイメージに追加するために使用します。

COPY package.json package-lock.json ./

依頼例

この COPY ステップがイメージに追加するファイルを教えてください。

Dockerfile

RUN

RUN

RUN npm ci

意味

イメージのビルド中にコマンドを実行します。

使う場面

OSパッケージのインストール、依存関係のインストール、またはアプリケーションファイルのビルドに使用します。

注意

RUN は、コンテナが起動するのではなく、イメージのビルド時に実行されます。

RUN npm ci

依頼例

Dockerfileのビルド時コマンドとコンテナ起動コマンドを分離します。

Dockerfile

CMD

CMD

CMD ["npm", "run", "start"]

意味

コンテナの起動時に実行されるデフォルトのコマンドを定義します。

使う場面

Webサーバー、APIサーバー、ワーカー、またはスクリプトを開始するために使用します。

CMD ["npm", "run", "start"]

依頼例

このコンテナがどのコマンドで開始されるか教えてください。

Dockerfile

EXPOSE

EXPOSE

EXPOSE 3000

意味

コンテナ化されたアプリケーションがリッスンするポートを文書化してください。

使う場面

ヒントとして使用し、docker run -p または compose ポートを使用してポートを公開します。

注意

EXPOSE だけでは、アプリケーションがブラウザからアクセス可能になるわけではありません。

EXPOSE 3000

依頼例

この公開されているポートが、実際に公開されているかどうかを説明してください。

Dockerfile

.dockerignore

.dockerignore

node_modules

意味

Dockerのビルドコンテキストからパスを除外するファイル。

使う場面

ローカルの依存関係、ビルド出力、シークレット、および一時ファイルを、イメージのビルドから除外するために使用します。

node_modules

依頼例

この.dockerignoreファイルが、安全でないファイルまたは不要なファイルを除外しているかどうかを確認します。

Dockerfile

ビルドコンテキスト

Build context

docker build -t my-app .

意味

イメージのビルド中に、Dockerに送信されるフォルダ。

使う場面

docker build における最後のドットは、通常、現在のフォルダがビルドコンテキストであることを意味します。

注意

大規模なコンテキストはビルドを遅くし、誤ってプライベートファイルを含める可能性があります。

docker build -t my-app .

依頼例

このDockerビルドで使用可能なファイルを説明してください。

Docker Compose

Docker Compose

Docker Compose

docker compose up

意味

1つのYAMLファイルから複数のDockerサービスを実行するためのツール。

使う場面

アプリケーション、データベース、キャッシュ、ワーカー、またはローカル開発スタックに使用します。

docker compose up

依頼例

このComposeファイルが起動するサービスを説明してください。

Docker Compose

サービス

services

services: web: db:

意味

compose ファイルで定義された名前付きアプリケーションのパーツ。

使う場面

ウェブサービスがアプリケーションを実行し、データベースサービスがPostgreSQLを実行する可能性があります。

services: web: db:

依頼例

このcomposeファイル内のサービスをリストし、それぞれの機能について説明します。

Docker Compose

docker compose up

docker compose up

docker compose up -d

意味

composeファイルで定義されたサービスを開始します。

使う場面

サービスをバックグラウンドで実行したい場合は、-dを使用します。

docker compose up -d

依頼例

Composeサービスを開始し、実行中のサービスを表示します。

Docker Compose

docker compose down

docker compose down

docker compose down

意味

composeによって作成されたコンテナを停止し、削除します。

使う場面

ローカルの開発環境が完了した場合に利用します。

注意

名前付きボリュームは、明示的にボリュームを削除しない限り、通常は残ります。

docker compose down

依頼例

持続データは削除せずに、このcomposeスタックを停止します。

コマンド

docker build

docker build

docker build -t my-app .

意味

DockerfileとコンテキストからDockerイメージを構築します。

使う場面

Dockerfileを作成した後、またはアプリの依存関係を変更した後に使用します。

docker build -t my-app .

依頼例

このDockerイメージを構築し、ビルドエラーをすべて要約します。

コマンド

docker run

docker run

docker run --name my-app -p 3000:3000 my-app

意味

イメージからコンテナを作成して起動します。

使う場面

コンテナを、composeを使用せずに直接起動する場合に利用します。

docker run --name my-app -p 3000:3000 my-app

依頼例

この画像を実行し、ブラウザの URL を説明してください。

コマンド

docker ps

docker ps

docker ps

意味

実行中のコンテナをリストします。

使う場面

停止したコンテナも確認する場合は、docker ps -aを使用します。

docker ps

依頼例

実行中のコンテナとその公開ポートを表示します。

コマンド

docker stop

docker stop

docker stop my-app

意味

実行中のコンテナを停止します。

使う場面

コンテナを削除したり、ポートを解放したりする前に使用します。

docker stop my-app

依頼例

ポート3000を使用してコンテナを停止します。

コマンド

docker logs

docker logs

docker logs my-app

意味

コンテナからログを出力します。

使う場面

コンテナが終了したり、クラッシュしたり、またはアプリケーションが応答しない場合に、使用します。

docker logs my-app

依頼例

このコンテナのログを読み取り、最初のエラーを見つけます。

コマンド

docker exec

docker exec

docker exec -it my-app sh

意味

既に実行中のコンテナ内でコマンドを実行します。

使う場面

コンテナ内のファイル、環境変数、またはインストールされているツールを調査するために使用します。

注意

コンテナ内で手動で行った変更は、コンテナが再作成されると消えることがあります。

docker exec -it my-app sh

依頼例

このコンテナでシェルを開き、その環境変数をチェックします。

ポートとネットワーク

ports

ports

3000:3000

意味

あなたのコンピュータ上のポートを、コンテナ内のポートにマッピングします。

使う場面

ブラウザが、コンテナ内で実行されているWebアプリケーションにアクセスできるようにするために使用します。

注意

左側はホストポート、右側はコンテナポートです。

3000:3000

依頼例

このポート設定を開くべきURLを説明してください。

ポートとネットワーク

Dockerにおけるlocalhost

localhost in Docker

host.docker.internal

意味

localhost は、Docker内でコードが実行されている場合、ホストマシンではなく、コンテナ自体を指すことがあります。

使う場面

コンテナがホストマシンにアクセスする必要がある場合は、composeネットワークまたはhost.docker.internalを使用してください。

host.docker.internal

依頼例

このコンテナから、localhostがデータベースに到達できない理由を説明してください。

ファイルとデータ

音量

Volume

db-data:/var/lib/postgresql/data

意味

Docker-managed storage that can persist data outside a container's lifecycle.

使う場面

データベースデータまたはコンテナの再作成で生き残る必要があるファイルには、ボリュームを使用してください。

注意

ボリュームを削除すると、永続データが削除される可能性があります。

db-data:/var/lib/postgresql/data

依頼例

どの compose ボリュームが永続データとして使用されているか教えてください。

ファイルとデータ

バインドマウント

Bind mount

./src:/app/src

意味

ホストフォルダを直接コンテナのパスにマウントする。

使う場面

開発中に、ホストでのコードの変更がコンテナ内に表示されるように使用します。

注意

バインドマウントは、イメージにコピーされたファイルが同じパスにある場合に、それらを隠すことができます。

./src:/app/src

依頼例

このボリュームが、名前付きボリュームであるか、バインドマウントであるかを説明してください。

ファイルとデータ

環境

environment

DATABASE_URL=postgres://db:5432/app

意味

コンテナに渡される設定値。

使う場面

データベースのURL、ポート、モード、機能フラグ、およびランタイム設定には、環境変数を使用します。

注意

公開されている画像に秘密情報を埋め込んだり、実際の秘密情報をコミットしたりしないでください。

DATABASE_URL=postgres://db:5432/app

依頼例

このコンテナが必要とする環境変数を確認します。

トラブルシュート

ポートはすでに割り当てられています

port is already allocated

0.0.0.0:3000へのバインドに失敗しました:ポートはすでに割り当てられています。

意味

Docker cannot publish a host port because another process or container is already using it.

使う場面

ポートを使用しているプロセスまたはコンテナを見つけ、停止するか、別のホストポートを選択する。

0.0.0.0:3000へのバインドに失敗しました:ポートはすでに割り当てられています。

依頼例

このDockerポートを使用しているものを特定し、安全な修正方法を提案する。

トラブルシュート

そのコンテナ名は既に使用されています。

container name is already in use

競合。コンテナ名 "/my-app" は既に使用されています。

意味

同じ名前のコンテナがすでに存在します。

使う場面

既存のコンテナをリストし、次に再利用、削除、または名前を変更します。

競合。コンテナ名 "/my-app" は既に使用されています。

依頼例

データを予期せず削除することなく、このコンテナ名の競合を解決します。

トラブルシュート

ビルドキャッシュ

Build cache

docker build --no-cache -t my-app .

意味

Docker can reuse previous build layers to make builds faster.

使う場面

変更が無視されているように見える場合は、Dockerfileの順序を確認するか、キャッシュなしで再構築して、診断を行います。

注意

`--no-cache` はビルドを遅くする可能性があるため、意図的に使用してください。

docker build --no-cache -t my-app .

依頼例

Dockerのビルドキャッシュが、私の変更を隠している可能性があるかどうかを説明してください。

安全操作

docker system prune

docker system prune

docker system prune

意味

停止したコンテナ、未使用のネットワーク、および孤立したイメージなど、不要なDockerデータを削除します。

使う場面

Dockerがディスクスペースを過剰に使用している場合、そして何が削除されるかを理解している場合に、使用します。

注意

追加のフラグを使用すると、`prune`コマンドで、まだ必要な画像やボリュームを削除してしまう可能性があります。

docker system prune

依頼例

Dockerを削除する前に、何が削除され、どのデータが安全であるかを示してください。