第44回 Dockerfileを「Quay.io」で管理する:古賀政純の「攻めのITのためのDocker塾」(1/2 ページ)
ホステッドレジストリを活用すると、Dockerイメージをアップして管理するだけでなく、Dockerfileをアップロードし、ホステッドレジストリでDockerイメージをビルドすることも可能です。今回はその方方を具体的に見ていきます。
前回までは、Quey.ioにアップロードしたDockerイメージの管理について解説しました。今回は、Dockerイメージをアップロードすることなく、Dockerfileに関する管理手法について解説します。
ホステッドレジストリにDockerfileをアップロードしてみる
ホステッドレジストリのQuay.ioには、Dockerイメージをアップロードすることなく、Dockerfileをアップロードし、ホステッドレジストリ側でDockerイメージをビルドすることも可能です。その具体的な操作手順を見てみましょう。
まず、これまで使ってきたQuay.ioの「testrepo01」リポジトリの管理画面で、左側の上から4つ目のアイコンをクリックします。すると、「Repository Builds」の画面になります。この画面は、Dockerfileをアップロードする画面ですが、この時点では、まだDockerfileをアップロードしていませんので、画面上の「Build History」には、「No matching builds found」と表示されています。DockerfileをQuay.ioにアップロードするには、画面右上の「Start New Build」をクリックします。
すると、「Start Repository Build」のウィンドウが表示されるので、「Select file」をクリックし、手元のDockerfileを選択します。
手元にあるDockerfileを選択し、正常にロードできたら、以下のように「Dockerfile found and valid」のメッセージが表示されます。ウィンドウ右下の「Start Build」をクリックすると、Dockerfileを使ったDockerイメージのビルド処理がスタートします。
ビルドされたDockerイメージを確認する
Dockerイメージのビルドが成功すると、管理画面上の「Build History」に緑色のチェックマークが付きます。もし、ビルドに失敗するとチェックマークは付きませんので、再度Dockerfileを確認してください。
管理画面上の「Build History」にある緑色のチェックマークの右側にあるビルドID(ここでは、上図の「572cebf7」)をクリックします。すると、Dockerfileの中身などを確認できます。下の図にあるようにDockerfileの中身を見ると、このDockerイメージは、CentOS 6.8のOSテンプレートを元に、パッケージを最新のものにアップデートし、5秒ごとにdateコマンドの出力結果を/root/date.logファイルを出力するコンテナを起動することが分かります。
ビルドされたDockerイメージをQuay.ioから入手してみる
では、Quay.ioによってビルドされたDockerイメージを入手してみましょう。Dockerイメージ名は、Quey.ioの管理画面の左側にある上から2つ目のタグのアイコンをクリックします。すると、TAG列に「latest」というタグ名が表示されています。このタグ名を使ってDockerイメージを入手します。
ビルドされたDockerイメージを入手します。上の図では、タグ名が「latest」となっていますので、手元のDockerが稼働するホストOS上では、以下のように指定します。
local # docker pull quay.io/masazumi_koga/testrepo01:latest
ダウンロードしたDockerイメージを確認します。
local # docker images REPOSITORY TAG IMAGE ID ... SIZE quay.io/masazumi_koga/testrepo01 latest 4f6d0a1e9b02 ... 430 MB
Dockerイメージ「quay.io/masazumi_koga/testrepo01:latest」がダウンロードできていることが分かります。では、Dockerイメージからコンテナを起動してみましょう。コンテナ名は、「c0003」としました。
local # docker run \ -itd \ --name c0003 -h c0003 \ quay.io/masazumi_koga/testrepo01:latest local # docker exec -it c0003 tail -f /root/date.log Mon May 15 05:44:49 UTC 2017 Mon May 15 05:44:54 UTC 2017 Mon May 15 05:44:59 UTC 2017 ...
Dockerfileの記述どおり、dateコマンドを5秒後ごとに実行し、/root/date.logファイルにログとして書き出すコンテナが起動できることが確認できました。
関連記事
- 第43回 Dockerイメージを「Quay.io」で管理する(セキュリティ編)
ホステッドレジストリには、アップロードしたDockerイメージのセキュリティ脆弱性をチェックする機能もあります。「Quay.io」を実際に操作しながら、セキュリティチェックの方法を確認します。 - 第42回 Dockerイメージを「Quay.io」で管理する(準備編)
ホステッドレジストリは、一般に「Docker Hub」が有名ですが、今回はNASAやeBayも利用しているホステッドレジストリの「Quay.io」を使って、実際にDockerイメージを管理してみます。 - 第41回 「ホステッドレジストリ」を知る――NASAも使っているDockerイメージ管理
今回からは、Dockerイメージの管理サービスについて紹介していきます。NASAのジェット推進研究所でも利用されているDockerイメージの管理サービスを例に、具体的な操作方法も披露します。 - 第37回 Dockerでソフトウェア定義型ネットワーキングツール「pipework」を活用する
前回まで、3回に渡ってOpenStackでも利用されているソフトウェア定義型ネットワーキングを実現するOpen vSwitch(OVS)とovs-dockerを使ってホストOSとコンテナを同一LANセグメントに所属させ、マルチホストのコンテナ間通信を実現しました。今回は、Docker基盤で古くから利用されている「pipework」を使ったネットワーキングをご紹介します。 - 第38回 pipeworkでDockerコンテナに固定IPアドレスを付与する(構築編その1)
ソフトウェア定義型ネットワークを実現する「pipework」のコンテナを実際に使って、ホストOSとDockerコンテナを同一LANセグメントに所属させることで、マルチホストのコンテナ間通信を行う手順を解説します。 - 第39回 DHCPとpipeworkでDockerコンテナに動的IPアドレスを付与する(構築編その2)
Open vSwitch(OVS)を構築したホストOS上で、ソフトウェア定義型ネットワークを実現する「pipework」を利用し、DHCPクライアントの機能を使って、Dockerコンテナに動的にIPアドレスを割り当てる手順を紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.