Dockerの最初のステップ

シンプルかつダイレクトに進める方法で、今日から**Dockerを使い始めることができます。難しい用語は使わず、ストレスなくコンテナーを使えるように簡単なアプローチをします。おそらく、求人要項や他の開発者のプロジェクトでDocker**の話を聞いたことがあるでしょう。そして、それを使ってみたけど上手くいかなかったり、どう使うかがわからなかったかもしれません。この記事では、アプリケーションのコンテナ化のプロセスがどのようなものか、シンプルに紹介します。

私の主な目的は、プロジェクト開発におけるDockerの最初のステップを支援することです。私が使うアプリケーションのコンテキストに基づいたアプローチを意図しており、インターネットで見つけた方法とは異なる方法でツールを説明した後、小さなアプリケーションを例に実践を紹介します。この記事と終わりにリンクで提供する理論的な内容と合わせて、そのツールが何であり、背後でどのように動作するのかの良い基盤が得られるはずです。最終的には、何でもコンテナを作成する最初のステップができるようになることを願っています🐳。

インストールが必要です:

Dockerfile

これは設定ファイルで、Docker Imageの作成の最初のステップです。その中には、アプリケーションをコンテナ内で設定する手順が含まれています。dockerfileを何かを組み立てるためのマニュアルのようだと考えてください(この場合はあなたのアプリケーションです)、そしてその何かをプラグにする手順です。

Docker Image

Docker Imageは、アプリケーションが機能するために必要なすべてを組み合わせたものであり、その中にはソースコード、ライブラリ、依存関係が含まれます。あなたのアプリを写真で捉えたものです。

Container

ロケーションに関係なくパーティーをするときに、バルーン、スピーカー、カラフルなライトなどを箱に詰めて持っていくとしましょう。準備が整えばどこでもあなたのパーティーはできます。この箱が我々のコンテナであり、アプリケーションが機能するために必要なすべてを集めたものです。つまり、"私のマシンでは動く"というよくある問題を解決します。

他の言い方をすれば、コンテナは軽量で、ポータブルで、隔離されたソフトウェア環境であり、開発者がアプリケーションをその依存関係と共に、異なるプラットフォームで一貫して実行することを可能にします。開発、展開、アプリケーション管理のプロセスを合理化し、同時にインフラストラクチャに関係なくアプリケーションが一貫して実行されることを保証します。

Volume

簡単に言えば、Dockerのコンテキストにおけるボリュームは、ホストとコンテナ間のデータ共有と永続化を可能にするメカニズムです。データを保管し共有する方法で、コンテナーのライフサイクルから独立しています。

例えば、データベース用のコンテナがある場合、ボリュームを使用してデータベースデータを保管できます。そして、コンテナが削除されても、データは永続化できます。これにより、Docker環境でのデータ管理の柔軟性と一貫性が提供されます。

Compose

Docker Composeは、複数のコンテナーで構成されたDockerアプリケーションの管理を簡素化するツールです。YAMLファイルに複数のサービス、ネットワーク、ボリュームを定義し、設定し、実行することを可能にし、複雑な環境を一つのコマンドで作成し実行することを容易にします。

Docker Desktopはほとんどの設定を行うことができますが、コマンドを通じて操作に慣れることが推奨されます。何か疑問がある場合、インターネット上で見つけられる回答は大抵コマンド形式になるためです。デスクトップアプリを通じて設定を行いたい場合は、ドキュメントを確認することを推奨します。この項目では基本的なコマンドを幾つか紹介し、それぞれが何をするのかを説明します。

docker --help

Enter fullscreen mode Exit fullscreen mode

最もシンプルだが、非常に重要な--helpは、Dockerの全てのコマンドと簡単な説明を表示します。他のコマンドのオプションを思い出せない時は、--helpを使うことができます。

新しいバージョンを利用している全てのコマンドは、コマンドラインを使用する際のより構造化されたユーザーエクスペリエンスを提供するために作られています。旧バージョンのコマンド(例:docker ps等)がサポートされなくなる公式のアナウンスはまだありませんが、将来的にその可能性を想定するのは理にかなっています。

コンテナを管理するために:

コンテナの作成と実行:

docker container run name-of-image

Enter fullscreen mode Exit fullscreen mode

実行中のコンテナを一覧表示:

docker container ls

Enter fullscreen mode Exit fullscreen mode

全てのコンテナを一覧表示(停止中を含む):

docker container ls -a

Enter fullscreen mode Exit fullscreen mode

コンテナを停止:

docker container stop name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

停止中のコンテナを開始:

docker container start name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

コンテナを削除(停止している必要がある):

docker container rm name-or-ID-of-container
## '-f' オプションでコンテナを強制停止し、その後削除します

Enter fullscreen mode Exit fullscreen mode

イメージを管理するために:

ローカルのイメージを一覧表示:

docker image ls

Enter fullscreen mode Exit fullscreen mode

Docker Hubからイメージをダウンロード:

docker pull name-of-image

Enter fullscreen mode Exit fullscreen mode

Dockerfileからイメージを構築:

docker build -t name-of-image path-to-Dockerfile

Enter fullscreen mode Exit fullscreen mode

ローカルのイメージを削除:

docker rmi name-of-image

Enter fullscreen mode Exit fullscreen mode

ネットワークを管理するために:

Dockerネットワークを一覧表示:

docker network ls

Enter fullscreen mode Exit fullscreen mode

Dockerネットワークを作成:

docker network create name-of-network

Enter fullscreen mode Exit fullscreen mode

コンテナをネットワークに接続:

docker network connect name-of-network name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

コンテナをネットワークから切断:

docker network disconnect name-of-network name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

その他の便利なコマンド:

コンテナのログ:

docker logs name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

コンテナの詳細情報:

docker inspect name-or-ID-of-container

Enter fullscreen mode Exit fullscreen mode

この項目では、上記で説明したツールを少し実践的に扱っていきます。そのために、次のテクノロジーを使った小さなアプリケーションであるReact, Vite, Express, そしてPostgreSQLを使用します。

アプリケーションのリポジトリのリンク🐳

最初のDockerfile

./frontディレクトリでは、.gitignoreと似たように機能する.dockerignoreファイルが見られます。このファイルでは、アプリケーションのイメージに必要ないファイルやフォルダを定義します。Dockerfileは以下のような構造になります。

FROM node:18.17.0-alpine
WORKDIR /app
COPY package*.json ./
COPY . .
RUN npm install
RUN npm run build
EXPOSE 8080
CMD [ "npm", "run", "preview" ]

FROM

これはイメージの出発点であり、コンテナの基礎を定義します。このアプリケーションでは node のバージョン 18.17.0-alpine のイメージをダウンロードしています。alpine というのは Alpine Linux をベースに構築されたイメージであることを意味しています。これらのイメージは効率的で、ダウンロードが早く、コンテナでアプリケーションを実行するための軽量な環境を提供します。

WORKDIR

コンテナ内の作業ディレクトリを /app に設定します。つまり、これからのコマンドはこのディレクトリ内で実行されます。

COPY

ローカルディレクトリから package.json ファイル(及び "package" で始まるファイル)をコンテナ内の /app ディレクトリにコピーします。

二つ目の COPY はローカルディレクトリにある他の全ファイルをコンテナ内の /app ディレクトリにコピーします。

RUN

コンテナ内で npm install コマンドを実行し、package.json ファイルに指定されている依存関係をインストールします。

二つ目の RUNnpm run build コマンドを実行し、アプリケーションをビルドします。このコマンドは通常、アプリケーションをコンパイルし実行の準備をするために使用されます。

EXPOSE

コンテナ内のアプリケーションが 8080 ポートでリッスンしていることを示します。これはポートが自動的に開かれるわけではないですが、イメージを使用する人がどのポートでアプリケーションが公開されるかを知るための有用な情報です。

CMD

このイメージに基づくコンテナが開始されたときに実行されるデフォルトのコマンドを定義します。この場合、コマンドは npm run preview であり、アプリケーションのサーバーを開始しアクセス可能にします。

ここまでが私たちが使用する最も基本的な指示ですが、他にも多くの指示があります。より良い基礎を持つために ドキュメントをチェックすることをお勧めします。

Viteの設定


こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/clintonrocha98/primeiros-passos-no-docker-m0k