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

Dockerパート4:カスタムDockerイメージの構築と公開

第1部と第2部では、Dockerコンテナを管理するためのシステムを準備することでコンテナを実行するための基本と、技術的な観点から他の仮想化テクノロジーに対してDockerコンテナを使用することの正確な意味について説明しました。次に、第3部では、Dockerイメージを実際に使用し、基本を学び、WordPressまたはDokuWikiのいずれかを使用して最初のメモ帳コンテナーを作成しました。

この第4部では、Dockerイメージがどのように構築されるかを確認し、ダウンロードして友人、同僚、コミュニティと共有できる独自のカスタムイメージを作成します。

このチュートリアルでは、WhaleDockerイメージを使用します。クジラはDockerの公式マスコットであり、クジラのDockerイメージは、ターミナル内の牛のASCII画像をメッセージとともに生成するcowsayプログラムに似ています。 LinuxのマスコットであるTuxthePenguinなど、他の動物の事前に作成された画像を使用して画像を生成することもできます。

Dockerファイルの概要

前のパートでは、Docker Hubについて自己紹介し、Docker Hubがコンテナーイメージの検出、イメージの構築、およびそれらのイメージの配布のためのクラウドベースの集中型リソースであることを学びました。また、Dockerイメージはベースイメージの上にあるマルチレイヤーイメージであることも学びました。とはいえ、ベースイメージを使用すると、Dockerイメージに適したOSを最初から作成する手間が省け、ソフトウェアが存在する上位レイヤーをカスタマイズするオプションが提供されます。

ベースイメージを使用してカスタムイメージを作成するには、パッケージとファイルのインストールと構成の方法、およびそれに伴ういくつかの設定に関する手順をDockerエンジンに提供する必要があります。これらの手順は、「dockerfile」と呼ばれるプレーンテキストファイルで記述されています。 Dockerfilesは、シェフに渡すレシピのようなもので、シェフが素晴らしい料理を作ってくれます。これらのDockerファイルは、「命令」と呼ばれる単純で説明的な一連の手順を使用して書き込まれます。各命令は、画像に新しいレイヤーを作成します。手順には、コマンドの実行、ファイルまたはディレクトリの追加、イメージからコンテナを起動するときに実行するプロセスなどのアクションが含まれます。このプロセスは、シェルスクリプトで一連のコマンドを設定するのと同じです。イメージのビルドをリクエストすると、Dockerはdockerfileを読み取り、命令を実行して、最終的なイメージを返します。

Dockerイメージの構築

カスタムDockerイメージを構築する方法は2つあります。コンピューター上でビルドすることも、前に説明したDockerHubを使用することもできます。このパートでは、Dockerイメージをローカルでビルドし、DockerHubレジストリに公開する方法を学習します。

Dockerfileを使用してローカルにビルドする

小さなDockerイメージ(Ubuntuイメージに基づく)である「Whalesay」イメージを使用してカスタムDockerイメージを作成します。これを実行すると、プログラムした内容が返されます。

まず、ターミナルを起動し、次のように入力して新しいフォルダを作成します。

mkdir mywhale

このディレクトリは、ビルドの「コンテキスト」として機能します。コンテキストとは、イメージを正常に構築するために必要なすべてのものが含まれていることを意味します。

次のコマンドで新しいフォルダにアクセスします:

cd mywhale

次のように入力して、フォルダにDockerfileを作成します。

touch Dockerfile

'll'コマンドを実行すると、作成した空のDockerfileが表示されます。

ll
$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile

お気に入りのテキストエディタで開き、追加します:

FROM docker/whalesay:latest

FROMキーワードを使用したこの最初の命令行は、イメージがどのイメージに基づいているかをDockerに通知します。新しい作品は、既存のクジラの画像に基づいています。

次に追加する命令は、クジラに運命を告げる能力を与えます。このタスクを実行するために、Ubuntuリポジトリで利用可能なfortuneパッケージを使用します(クジラのイメージはUbuntuイメージに基づいていることに注意してください)。フォーチュンズプログラムには、クジラが言うべき賢明なことわざを印刷するコマンドがあります。

したがって、最初のステップはそれをインストールすることです。これを行うには、通常のaptインストール手順を追加します:

RUN apt -y update && apt -y install fortunes

イメージに必要なソフトウェアがインストールされたら、イメージがロードされたときに実行するようにソフトウェアに指示します。これを行うには、次の命令を追加します。

CMD /usr/games/fortune -a | cowsay

上記の行は、fortuneプログラムに、ランダムに選択された見積もりをCowsayプログラムに送信するように指示しています

これで完了です。ここでファイルを保存して終了します。
Dockerfileが次のようになるように、「catDockerfile」を実行して何をしたかを確認できます。

cat Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

すべてが(うまくいけば)見栄えが良くなったので、Dockerイメージをビルドします(コマンドのandの.periodを忘れないでください)。:

docker build -t my-docker-whale .

上記のコマンドは、現在のフォルダー内のDockerfileを取得し、ローカルマシン上に「my-docker-whale」というイメージを構築します。

Dockerイメージが実際にコンピューターに保存されていることを確認するには、次のコマンドを使用します。

docker images

次に、次のように入力してDockerイメージを実行できます。

docker run my-docker-whale

実行すると、次の画像のようなものが表示されます

DockerHubでのカスタムDockerイメージの公開

次のオプションは、作成したDockerイメージをDockerHubリポジトリに公開することです。そのためには、Docker HubサインアップWebページでアカウントを作成し、アカウントの名前、パスワード、および電子メールアドレスを入力する必要があります。また、DockerHubサービスはパブリックDockerイメージに対して無料であることも指摘しておく必要があります。アカウントを作成したら、以前に作成した画像をプッシュして、他のユーザーが使用できるようにすることができます。

そのためには、「my-docker-whale」画像のIDとタグが必要になります。

「dockerimages」コマンドを再度実行し、DockerイメージのIDとTAGをメモします。 a69f3f5e1a31。

次に、次のコマンドを使用して、Docker Imageを外の世界への旅に備えます(コマンドのaccountnameの部分は、Docker Hubeプロファイルページのアカウント名です):

docker tag a69f3f5e1a31 accountname/my-docker-whale:latest

「dockerimages」コマンドを実行して、新しくタグ付けされた画像を確認します。

次に、「docker login」コマンドを使用して、コマンドラインからDockerHubにログインします。

ログインコマンドの形式は次のとおりです。

docker login --username=yourhubusername [email protected]

プロンプトが表示されたら、パスワードを入力してEnterキーを押します。

これで、新しく作成したリポジトリに画像をプッシュできます:

docker push accountname/my-docker-whale

上記のコマンドは、180ΜΒのデータ(この例では)のようなものをアップロードするため、接続のアップロード帯域幅によっては完了するまでに時間がかかる場合があります。完了したら、Docker Hubのプロファイルに移動して、新しいイメージを確認できます。

カスタム画像のダウンロード

Docker Hubリポジトリからイメージをプルする場合は、ローカルとリモートのイメージが同一であるため、Dockerがハブからのプルを拒否するため、最初にローカルマシンから元のイメージを削除する必要があります。

前の部分で覚えているように、Dockerイメージを削除するには、「dockerrmi」コマンドを実行する必要があります。 IDまたは名前を使用して画像を削除できます:

docker rmi -f a69f3f5e1a31

イメージが削除されたので、Docker Hubからアカウント名を含めることで、「docker run」コマンドを使用して、リポジトリからイメージをプルしてロードできます。

docker run accountname/my-docker-whale

以前にイメージを削除し、ローカルシステムで使用できなくなったため、Dockerはイメージをダウンロードして、指定された場所に保存します。

概要

このパートでは、Dockerファイルを作成する方法、いくつかの基本的な手順を記述し、それをレシピとして使用してビルドとイメージを作成する方法を学びました。また、新しいカスタムイメージをDocker Hubレジストリにプッシュし、ローカルマシンにプルする基本についても説明しました。この一連のDockerチュートリアルの次のパートでは、イメージ構築手順を自動化して、必要なときにいつでもカスタムイメージを即座に作成できるようにする方法を紹介します。しばらくお待ちください。


Docker
  1. ホスト間でDockerイメージを移動する方法

  2. 独自のDockerイメージを作成、タグ付け、アップロードする

  3. Dockerイメージを他の人と共有する方法

  1. Dockerイメージをあるサーバーから別のサーバーにパッケージ化して転送する方法

  2. Dockerイメージを変更する方法

  3. コンテナと Dockerfile から Docker イメージを作成する方法

  1. Docker:実用的な方法でそれを使用する方法-パート3

  2. ビルド済みのDockerイメージ入門

  3. Dockerfileを使用してカスタムDockerイメージを自動的に構築および構成する方法–パート3