Dockerイメージを使用すると、複数の仮想マシン間で同じイメージを維持しなくても、複数のコンテナーを簡単にデプロイできます。 Dockerfileを使用して、イメージとその依存関係のインストールと構成を自動化できます。 ADockerfileは、Dockerイメージのインストールと構成を自動化するために使用されるコマンド(順番に実行される)のテキストファイルです。この記事では、Dockerイメージ、コンテナー、およびDockerfileの詳細な利用について説明することにより、Dockerfileを使用してDockerイメージを構築する方法に関するガイドを拡張します。
始める前に
-
スタートガイドをよく理解し、Linodeを作成して更新し、Dockerをインストールしてください。または、DockerMarketplaceアプリを使用して更新されたDocker対応のLinodeをすばやくデプロイすることもできます。
-
コンピューティングインスタンスのセットアップと保護に関するガイドに従って、Linodeが安全であることを確認してください。
-
このガイドは、Dockerコマンドラインインターフェイス(CLI)の使用に慣れていることを前提としています。 Docker CLIの詳細については、ドキュメントをご覧ください。
-
Dockerfilesの基本を理解するには、ガイドを確認してください。
DockerイメージのDockerfileを作成する
Dockerは、ビルドに機能するDockerfileを必要とします。ここでは、ApacheがWebサーバーとして機能し、標準のHTTPポート80を使用してUbuntuイメージをセットアップするDockerfileを作成します。
-
コマンドプロンプトで(SSHまたはLinode ManagerのLishを介して)、新しいディレクトリを作成して変更します:
mkdir ~/mydockerbuild && cd ~/mydockerbuild
-
Apacheアプリケーション用のサンプルDockerfileを作成します:
touch apache_dockerfile
-
選択したテキストエディタを使用してDockerfileを開きます(この例では、nanoを使用します):
nano apache_dockerfile
-
次の例をDockerfileにコピーします。これにより、更新されたUbuntuイメージを生成し、メンテナ情報を設定し、Apacheをインストールし、コンテナポート80を開き、実行時に最後にApacheサーバーを起動するDockerfileを作成します。
- ファイル:apache_dockerfile
注 ARG DEBIAN_FRONTEND=noninteractive
命令は、後続のRUN apt-get
を確実にします コマンドは、イメージを構築するときに追加のユーザー入力を必要とせずに実行されます。この命令は、ENV
を使用して作成することもできます。ARG
の代わりに イメージとともにデプロイされるコンテナーで環境変数を永続化するため。このようなコンテナ内で作業する場合、非対話性は期待できない可能性があるため、ARG
この場合に推奨されます。 -
ファイルを保存して閉じます。
DockerfileからDockerイメージを構築する
-
apache_image
というラベルの付いたイメージを作成しますdocker build
を使用してDockerfileから コマンド:docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
-
ビルドが終了してコマンドプロンプトに戻ったら、次のコマンドを使用してシステムで使用可能なイメージを表示します。
docker images
出力は次のようになります(Dockerfileの「FROMubuntu」行により「ubuntu」リポジトリも利用できます):
REPOSITORY TAG IMAGE ID CREATED SIZE apache_image latest 7e5c14739da5 7 seconds ago 215MB ubuntu latest 7e0aa2d69a15 6 weeks ago 72.7MB
注 デフォルトでは、ビルドされたイメージには「最新」のタグが付けられます。 「開発」などのタグを変更する場合は、コマンドを次のようにフォーマットします。
docker build ~/mydockerbuild -f apache_dockerfile -t apache_image:development
Dockerイメージをコンテナーとして実行する
docker run
を実行すると コマンドを使用して、ターミナルセッションに関連付けられたDockerコンテナを起動します。これは、フォアグラウンドでプロセスを実行することとも呼ばれます。 。ルートプロセスがフォアグラウンドにあり、ターミナルセッションに関連付けられている場合、ターミナルセッションを閉じるとすぐにコンテナが終了します。ターミナルセッションを閉じた後でもコンテナを実行したい場合は、コンテナをデタッチで実行できます。 モード。これにより、コンテナがバックグラウンドで実行されます。 。
Dockerイメージをデタッチモードでコンテナーとして実行するには:
-
次のコマンドを入力して、
apache
という名前のコンテナを作成します-d
を使用して画像を表示します コンテナがバックグラウンドで実行されるようにするための引数:docker run --name apache -d apache_image
-
コマンドプロンプトに戻ったら、次のコマンドを実行してアクティブなコンテナを一覧表示し、
apache
であることを確認します。 バックグラウンドで実行:docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d5e1da50a86 apache_image "apache2ctl -D FOREG…" 3 minutes ago Up 3 minutes 80/tcp apache
-
これで、Apacheサーバーを使用して開発作業を行うことができ、コマンドラインにアクセスできます。ただし、追加のポート構成がないため、コンテナーはパブリックにアクセスできません。次のセクションでは、Webサーバーにアクセスできるようにするポート構成を使用してコンテナーを再構築します。今のところ、コンテナを停止します:
docker stop apache
注 apache
の代わりにコンテナIDを入力できます 上記のコマンドで。 -
docker ps
と入力します もう一度、すべてのapache
を確認します コンテナはもう実行されていません。 -
コンテナが停止したので、削除できます:
docker rm apache
注意 この方法でコンテナを削除すると、コンテナ内のすべてのデータが削除されます。新しいコンテナに持ち込みたい調整を行った場合は、代わりに
docker commit
を使用できます。 更新を含む新しいイメージを作成するには:docker commit apache apache_image_update
次に、新しい
apache_image_update
に基づいて新しいコンテナをデプロイできます。 次のセクションの画像。
Dockerコンテナのポートを構成する
run
を使用できます コンテナのさまざまな側面を構成するためのコマンドのオプション。コンテナがリモートホスト上で実行され、そのアプリケーションを提供する場合、アプリをユーザーに公開するようにポートを構成できます。
たとえば、apache
を設定できます ホストポートを使用するコンテナ8080
およびコンテナポート80
以下のコマンド例のように。 -d
に注意してください コンテナをデタッチプロセスとして実行するためにコマンドで使用されるオプション。
docker run --name apache -p 8080:80 -d apache_image
このコマンドの一般的な構文は次のとおりです。
docker run -–name <container name> -p <network port>:<container port> -d <container image label or ID>
各パラメータについては、次のリストで説明されています。
<container name>
:Dockerコンテナの名前<host port>
:コンテナの開いているポートにマップされているホストポート<container port>
:Dockerコンテナがリッスンするポート<container image name>
:デプロイに使用されるDockerイメージ名
次に、http://<your Linode's IP address>:8080
に移動して、ホストポート8080でLinodeのIPアドレスに移動します。 Webブラウザで。 Dockerコンテナから提供される「Apache2Ubuntuデフォルトページ」が表示されます。
注意 ポート構成でコンテナーをデプロイする場合、Dockerはホストファイアウォールルールを作成して、それらのコンテナーへのパブリックアクセスを許可する場合もあります。これは、Linodeで構成したホストファイアウォールルールを上書きまたは競合する可能性があります。
さらに読む
このガイドとDockerfileを使用してDockerイメージを構築する方法では、Dockerfileを使用してイメージとコンテナーを構築する基本について説明しましたが、Dockerで実現できることのほんの一部にすぎません。詳細情報:
-
Dockerfileの詳細については、公式のDockerfileベストプラクティスドキュメントをご覧ください。
-
また、その名前にもかかわらず、DockerのGet Startedガイドは詳細なチュートリアルであり、アプリケーションのクラウドへのデプロイや CI / CD のセットアップなど、さらに詳細なガイドにつながります。 (継続的インテグレーションとデプロイ)。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- Dockerfileを作成するためのベストプラクティス
- DockerHub上の公式Dockerイメージ
- Docker Docs