GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerイメージ、コンテナー、およびDockerファイルを詳細に使用する方法

Dockerイメージを使用すると、複数の仮想マシン間で同じイメージを維持しなくても、複数のコンテナーを簡単にデプロイできます。 Dockerfileを使用して、イメージとその依存関係のインストールと構成を自動化できます。 ADockerfileは、Dockerイメージのインストールと構成を自動化するために使用されるコマンド(順番に実行される)のテキストファイルです。この記事では、Dockerイメージ、コンテナー、およびDockerfileの詳細な利用について説明することにより、Dockerfileを使用してDockerイメージを構築する方法に関するガイドを拡張します。

始める前に

  1. スタートガイドをよく理解し、Linodeを作成して更新し、Dockerをインストールしてください。または、DockerMarketplaceアプリを使用して更新されたDocker対応のLinodeをすばやくデプロイすることもできます。

  2. コンピューティングインスタンスのセットアップと保護に関するガイドに従って、Linodeが安全であることを確認してください。

  3. このガイドは、Dockerコマンドラインインターフェイス(CLI)の使用に慣れていることを前提としています。 Docker CLIの詳細については、ドキュメントをご覧ください。

  4. Dockerfilesの基本を理解するには、ガイドを確認してください。

DockerイメージのDockerfileを作成する

Dockerは、ビルドに機能するDockerfileを必要とします。ここでは、ApacheがWebサーバーとして機能し、標準のHTTPポート80を使用してUbuntuイメージをセットアップするDockerfileを作成します。

  1. コマンドプロンプトで(SSHまたはLinode ManagerのLishを介して)、新しいディレクトリを作成して変更します:

    mkdir ~/mydockerbuild && cd ~/mydockerbuild
    
  2. Apacheアプリケーション用のサンプルDockerfileを作成します:

    touch apache_dockerfile
    
  3. 選択したテキストエディタを使用してDockerfileを開きます(この例では、nanoを使用します):

    nano apache_dockerfile
    
  4. 次の例をDockerfileにコピーします。これにより、更新されたUbuntuイメージを生成し、メンテナ情報を設定し、Apacheをインストールし、コンテナポート80を開き、実行時に最後にApacheサーバーを起動するDockerfileを作成します。

    ファイル:apache_dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    FROM ubuntu
    MAINTAINER John Doe [email protected]
    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get update
    RUN apt-get upgrade -y
    RUN apt-get install apache2 -y
    RUN apt-get clean
    EXPOSE 80
    CMD ["apache2ctl","-D","FOREGROUND"]
    ARG DEBIAN_FRONTEND=noninteractive 命令は、後続のRUN apt-getを確実にします コマンドは、イメージを構築するときに追加のユーザー入力を必要とせずに実行されます。この命令は、ENVを使用して作成することもできます。 ARGの代わりに イメージとともにデプロイされるコンテナーで環境変数を永続化するため。このようなコンテナ内で作業する場合、非対話性は期待できない可能性があるため、ARG この場合に推奨されます。
  5. ファイルを保存して閉じます。

DockerfileからDockerイメージを構築する

  1. apache_imageというラベルの付いたイメージを作成します docker buildを使用してDockerfileから コマンド:

    docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
    
  2. ビルドが終了してコマンドプロンプトに戻ったら、次のコマンドを使用してシステムで使用可能なイメージを表示します。

     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イメージをデタッチモードでコンテナーとして実行するには:

  1. 次のコマンドを入力して、apacheという名前のコンテナを作成します -dを使用して画像を表示します コンテナがバックグラウンドで実行されるようにするための引数:

    docker run --name apache -d apache_image
    
  2. コマンドプロンプトに戻ったら、次のコマンドを実行してアクティブなコンテナを一覧表示し、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
  3. これで、Apacheサーバーを使用して開発作業を行うことができ、コマンドラインにアクセスできます。ただし、追加のポート構成がないため、コンテナーはパブリックにアクセスできません。次のセクションでは、Webサーバーにアクセスできるようにするポート構成を使用してコンテナーを再構築します。今のところ、コンテナを停止します:

    docker stop apache
    
    apacheの代わりにコンテナIDを入力できます 上記のコマンドで。
  4. docker psと入力します もう一度、すべてのapacheを確認します コンテナはもう実行されていません。

  5. コンテナが停止したので、削除できます:

    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

Docker
  1. Dockerコンテナをエクスポートおよびインポートする方法

  2. DockerComposeの使用方法

  3. Dockerfileを使用してDockerイメージを構築する方法

  1. すべてのDockerイメージ、コンテナー、ボリューム、ネットワーク、および未使用のリソースを削除する方法

  2. Ubuntu20.04にDockerをインストールして使用する方法

  3. リモートDockerホストを使用する方法と理由

  1. CentOSにDockerComposeをインストールして使用する方法

  2. UbuntuでDockerをインストールしてDockerコンテナを実行する方法

  3. Docker コンテナーをバックアップおよび復元する方法