基本概念
Docker
Docker
docker --version意味
アプリケーションを隔離されたコンテナでパッケージ化および実行するためのツール。
使う場面
アプリケーションが、異なるマシンで同じOSパッケージ、ランタイム、および依存関係で実行されるようにする場合に利用します。
例
docker --version依頼例
このプロジェクトが、Dockerで実行できるかどうかを説明してください。
プログラミング
Docker のイメージ、コンテナ、Dockerfile、Compose、ポート、ボリューム、ログ、よくある問題を整理した検索ガイドです。
33 件
基本概念
Docker
docker --versionアプリケーションを隔離されたコンテナでパッケージ化および実行するためのツール。
アプリケーションが、異なるマシンで同じOSパッケージ、ランタイム、および依存関係で実行されるようにする場合に利用します。
docker --versionこのプロジェクトが、Dockerで実行できるかどうかを説明してください。
基本概念
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:16Dockerイメージが保存され、ダウンロードされるサーバー。
Docker Hub and private registries are used to share base images or deployable app images.
docker pull postgres:16このイメージはどこからダウンロードされるかを説明してください。
Dockerfile
Dockerfile
DockerfileDockerイメージの構築方法を定義するファイル。
依存関係のインストール、アプリケーションファイルのコピー、およびアプリケーションの起動コマンドの定義に使用します。
Dockerfileこの Dockerfile を読み取り、ビルド手順を要約します。
Dockerfile
FROM
FROM node:20-alpineDockerfileで、ベースイメージを選択する命令。
OSのレイヤーの開始点、および多くの場合、ランタイムのバージョンを決定します。
ベースイメージを変更すると、利用可能なコマンド、セキュリティアップデート、およびイメージサイズに影響を与える可能性があります。
FROM node:20-alpineこの`FROM`イメージに含まれるものを説明してください。
Dockerfile
WORKDIR
WORKDIR /app画像内のフォルダーを設定し、そのフォルダー内で後続のコマンドを実行します。
COPY、RUN、およびCMDコマンドが、予測可能なアプリケーションフォルダから実行されるように使用します。
WORKDIR /appこのDockerfileが、アプリケーションディレクトリとして使用するフォルダを説明してください。
Dockerfile
COPY
COPY package.json package-lock.json ./ビルドコンテキストからファイルをイメージにコピーします。
依存関係ファイル、ソースコード、および静的アセットをイメージに追加するために使用します。
COPY package.json package-lock.json ./この COPY ステップがイメージに追加するファイルを教えてください。
Dockerfile
RUN
RUN npm ciイメージのビルド中にコマンドを実行します。
OSパッケージのインストール、依存関係のインストール、またはアプリケーションファイルのビルドに使用します。
RUN は、コンテナが起動するのではなく、イメージのビルド時に実行されます。
RUN npm ciDockerfileのビルド時コマンドとコンテナ起動コマンドを分離します。
Dockerfile
CMD
CMD ["npm", "run", "start"]コンテナの起動時に実行されるデフォルトのコマンドを定義します。
Webサーバー、APIサーバー、ワーカー、またはスクリプトを開始するために使用します。
CMD ["npm", "run", "start"]このコンテナがどのコマンドで開始されるか教えてください。
Dockerfile
EXPOSE
EXPOSE 3000コンテナ化されたアプリケーションがリッスンするポートを文書化してください。
ヒントとして使用し、docker run -p または compose ポートを使用してポートを公開します。
EXPOSE だけでは、アプリケーションがブラウザからアクセス可能になるわけではありません。
EXPOSE 3000この公開されているポートが、実際に公開されているかどうかを説明してください。
Dockerfile
.dockerignore
node_modulesDockerのビルドコンテキストからパスを除外するファイル。
ローカルの依存関係、ビルド出力、シークレット、および一時ファイルを、イメージのビルドから除外するために使用します。
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 up1つの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 -dcomposeファイルで定義されたサービスを開始します。
サービスをバックグラウンドで実行したい場合は、-dを使用します。
docker compose up -dComposeサービスを開始し、実行中のサービスを表示します。
Docker Compose
docker compose down
docker compose downcomposeによって作成されたコンテナを停止し、削除します。
ローカルの開発環境が完了した場合に利用します。
名前付きボリュームは、明示的にボリュームを削除しない限り、通常は残ります。
docker compose down持続データは削除せずに、このcomposeスタックを停止します。
コマンド
docker build
docker build -t my-app .DockerfileとコンテキストからDockerイメージを構築します。
Dockerfileを作成した後、またはアプリの依存関係を変更した後に使用します。
docker build -t my-app .このDockerイメージを構築し、ビルドエラーをすべて要約します。
コマンド
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 -aを使用します。
docker ps実行中のコンテナとその公開ポートを表示します。
コマンド
docker stop
docker stop my-app実行中のコンテナを停止します。
コンテナを削除したり、ポートを解放したりする前に使用します。
docker stop my-appポート3000を使用してコンテナを停止します。
コマンド
docker logs
docker logs my-appコンテナからログを出力します。
コンテナが終了したり、クラッシュしたり、またはアプリケーションが応答しない場合に、使用します。
docker logs my-appこのコンテナのログを読み取り、最初のエラーを見つけます。
コマンド
docker exec
docker exec -it my-app sh既に実行中のコンテナ内でコマンドを実行します。
コンテナ内のファイル、環境変数、またはインストールされているツールを調査するために使用します。
コンテナ内で手動で行った変更は、コンテナが再作成されると消えることがあります。
docker exec -it my-app shこのコンテナでシェルを開き、その環境変数をチェックします。
ポートとネットワーク
ports
3000:3000あなたのコンピュータ上のポートを、コンテナ内のポートにマッピングします。
ブラウザが、コンテナ内で実行されているWebアプリケーションにアクセスできるようにするために使用します。
左側はホストポート、右側はコンテナポートです。
3000:3000このポート設定を開くべきURLを説明してください。
ポートとネットワーク
localhost in Docker
host.docker.internallocalhost は、Docker内でコードが実行されている場合、ホストマシンではなく、コンテナ自体を指すことがあります。
コンテナがホストマシンにアクセスする必要がある場合は、composeネットワークまたはhost.docker.internalを使用してください。
host.docker.internalこのコンテナから、localhostがデータベースに到達できない理由を説明してください。
ファイルとデータ
Volume
db-data:/var/lib/postgresql/dataDocker-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データを削除します。
Dockerがディスクスペースを過剰に使用している場合、そして何が削除されるかを理解している場合に、使用します。
追加のフラグを使用すると、`prune`コマンドで、まだ必要な画像やボリュームを削除してしまう可能性があります。
docker system pruneDockerを削除する前に、何が削除され、どのデータが安全であるかを示してください。