Docker は、コンテナーの概念に基づいてアプリケーションの展開を容易にするために開発されたソフトウェア プラットフォームです。このプラットフォームを使用して、アプリケーションを「コンテナ」と呼ばれる標準化された単位に収集することにより、アプリケーションの作成、テスト、および配布を行うことができます。プロセス。仮想マシンの場合と同様に、特定の計算リソースが各コンテナーに割り当てられます。仮想マシンとは異なり、Docker はハードウェア エミュレーションを必要としませんが、各コンテナーに対してホストの物理ハードウェアを使用します。
リソース効率が高く、システム パフォーマンスの向上を実現できるコンテナ化は、仮想化の自然な進化と見なすことができます。さらに、アプリケーションの正しい実行に必要なもの (ライブラリ、システム ツール、コードなど) を備えているため、コンテナーはランタイム環境の構成を気にする必要なく、アプリケーションの展開を簡素化します。
このチュートリアルでは、Linux で Docker コンテナを最適に管理する方法、Docker Hub からイメージをダウンロードする方法、新しいコンテナを作成する方法、およびそのイメージを保存する方法を学習します。
システムに Docker プラットフォームが存在しない場合は、Ubuntu 18.04 に Docker をインストールする方法に関するガイドに従うことをお勧めします。
画像のダウンロード
コンテナはイメージから構築されます。デフォルトでは、これらのイメージは、会社が提供する公式イメージのレジストリである Docker Hub からダウンロードされます。
誰でも Docker Hub でイメージをホストできます。これにより、事前にパッケージ化されたイメージをアプリケーションのベースとして使用できます。
コマンドを実行してみてください:
$ docker run centos
Docker は、ローカル レジストリで「centos」イメージを検索します。見つからない (まだダウンロードされていないため) Docker は Docker Hub からダウンロードし、このイメージでコンテナーを構築します。
使用されている画像は視覚的な出力を提供しませんが、次のコマンドでコンテナが実行されていることを確認できます:
$ docker ps
実行中および停止中のすべての既存のコンテナを表示するには:
$ docker ps -a
ダウンロードした画像のリストを表示するには、次のように入力します:
$ docker images
コンテナの構築
コンテナは仮想マシンに似ており、リソースの点で安価です。
以前にダウンロードした centos イメージでビルドしてみてください:
$ docker run -it centos
「-it」スイッチを使用すると、コンテナー内のシェルにアクセスできます。表示されるシェルはオペレーティング システムのものではなく、コンテナのものです。すべてのコマンドは、ホストのシェルではなく、コンテナ内に存在する OS のシェル (この場合は Ubuntu) で実行されます。
コンテナのシェルを終了してホストのシェルに戻るには、次のように入力します:
$ exit
コンテナを開始、停止、または削除するには:
$ docker start ID_or_container_name
$ docker stop ID_or_container_name
$ docker rm ID_or_container_name
コンテナを開始または削除する前に、コンテナを「停止」状態にする必要があります。
コンテナをブロックする前に、コンテナを「実行」状態にする必要があります。
コンテナは隔離された環境であるため、定義上「閉鎖的」です。 「コンテンツ」とやり取りするには、通信ポートをマップします。
$ docker run -p 8081:80 -d nginx
「docker run」:コンテナ起動コマンド。
“-p 8081:80”:ホストのポート 8081 でコンテナー ポート 80 を公開します。
WebServer をホストするコンテナーの場合は、"localhost:8081" でアクセスします。
「-d」:コンテナーをバックグラウンドで実行します。
「nginx」:コンテナの構築に使用されるイメージ。
イメージがローカルに存在しない場合は、Docker Hub からダウンロードされます。
コンテナ イメージのビルド
コンテナを作成し、必要な「カスタマイズ」を行ったら、相対イメージを作成することをお勧めします。コンテナに挿入されたすべてのもの (追加モジュールのインストールまたはその他のカスタマイズ) は、コンテナ内ではなくコンテナ内に残ります。ビルドに使用されるイメージ。削除して再作成すると、その時点までに行われた変更はコンテナーに表示されません。
CentOS イメージでコンテナーを作成し、Nginx をインストールしたとします。コンテナーを削除し、ubuntu イメージで再作成すると、使用するイメージに Nginx が含まれていないため、コンテナーに Nginx は含まれません。
コンテナのイメージを生成するには (および同じ条件でコンテナを再作成するためのバックアップを作成するには)、次のコマンドを実行します:
$ docker commit -m "List of changes made" -a "User name" container_id repository/image_name
"-m" は、参照するログを取得するために変更のリストを書き込むために使用されます
"-a" は、画像を生成したユーザーの名前を示すために使用されます
このコマンドはイメージをローカル レジストリに保存します (Docker イメージで表示可能)。
イメージは Docker Hub に保存することもできます。これを行うには、最初に Docker Hub で (シェルから) Docker を使用して、次のように入力して自分自身を認証します。
$ docker login -u username
Docker Hub で認証するためのパスワードを入力する必要があります
$ docker push username/image_name