CentOS7の検証用環境をDockerイメージとして作成し「Docker Hub」へプッシュする
はじめに
検証環境としてクリーンなCentOS7環境が必要なことが多いですが、とはいえほぼ必要になるツールが決まっていることが多いです。
アプリケーションのインストール方法として git
が必須ということが多いですし、 データ編集用や確認用に vim
や view
コマンドがあると便利です。
API呼び出し後のJSONデータ検証のために jq
が必要だったりもしますね。
そのような頻繁に使われるツールがインストール済みの薄いCentOS7環境が予めあると助かります。
Dockerのイメージ作成の復習も兼ねてイメージ作成から「Docker Hub」での公開までの流れをまとめてみました。
検証環境
前提条件
- Dockerがインストールされていること
作業開始
作業用ディレクトリのディレクトリ作成
作業用のディレクトリを作成しましょう。
Dockerfile(Dockerイメージを作成するためのレシピ)を作成する
Dockerイメージを作成するための「レシピ」となる Dockerfile を作成します。
ここでは、 git
と vim
コマンドを使えるようにしています。
また yum
を使ったあとはキャッシュ情報がローカルディスクに残ってしまいますが、ディスク使用領域が増えるとDockerイメージが大きくなり、立ち上げや「Docker Hub」のアップロードが遅くなりますので削除しておきます。
実施した内容をブログやWikiに転記することも多いので、プロンプトはシンプルなもの( $
のみ )にしておきます。
内容を確認します。
Dockerイメージを作成する
先程作成した Dockerfile
を使ってDockerのイメージを作成します。
-t
オプションでイメージにタグ(名前)を付与します。
ここでは genzouw/centos-sandbox
というタグ名を付与しています。(ややこしい書き方になっていますが、ディレクトリ名からタグ名を付与するようにしています。)
作成できたか確認してみましょう。
Dockerイメージを「Docker Hub」にプッシュ(アップロード)する
いよいよ、Dockerのイメージを「Docker Hub」にアップロードします。
「Docker Hub」のアカウントを作成
Docker Hubのページにアクセスし、アカウントを作成します。
ここでの注意点は、先程作成したDcokerイメージのタグ名のスラッシュ前方部分(僕の場合は genzouw/centos-sandbox
としているので、 genzouw
になりますね)とアカウント名を合わせておくということです。
タグ名の方を変更したい場合はもう一度 docker build
し直しましょう。
クライアントマシンで認証を行う
アカウント発行後はクライアントマシンで認証を行っておきます。
プッシュを行う前に認証して置かなければいけません。
Dockerイメージをにプッシュする
Dockerイメージをプッシュするには docker push
コマンドを利用します。
Dockerイメージを選択するには先程指定した「タグ名」を使います。
ここでは genzouw/centos-sandbox
というタグ名を選択しています。(ややこしい書き方になっていますが、ディレクトリ名からタグ名を付与するようにしています。)
特にエラーがなければアップロード完了です。
「Docker Hub」のリポジトリページを確認
「Docker Hub」ページは以下のようになりました。
動作確認
本当にできたのか動作確認してみます。
アップロードしたDockerイメージファイルをクライアントマシン上から削除した後、「Docker Hub」からダウンロードしてこれるか確認してみます。
初めてのダウンロードなので、1分程度かかります。
コンテナにログインできれば、 git
や vim
を実行してみましょう。利用できることがわかるはずです。
Dockerfile も公開しておこう
「Docker Hub」上に公開されているコンテナイメージですが、どんなセキュリティリスクがあるかわかりません。
レシピとなる Dockerfile
が公開されていれば利用者が判断できますが、 Dockerfile
が公開されていないイメージは利用されることは殆どないはずです。
せっかくなので Dockerfile
も公開してみてもらいましょう。
ここでは hub
コマンドを使って「Github」おリポジトリを作成していますが、ブラウザから手動操作で作成しても構いません。
作成後は「Docker Hub」のリポジトリページと「Github」の公開リポジトリを紐づけてやります。
こちらのページを開き、 「Link to Github」 ボタンを押す。
紐づけしたい「Github」リポジトリを選択します。
正しく設定ができれば、他のユーザからはこのように見えます。
Github連携機能のすごいところ
「Github」連携機能ですが、 Dockerfile
を編集して「Github」にプッシュしたタイミングで、「Docker Hub」にフックされるようです。
「Docker Hub」はフックをトリガにビルドした後、Dockerイメージを自動的に作り直してくれます。ホント便利。
ひとこと
無料でこのような環境を提供してくれるなんて素晴らしいですね。
ディスカッション
コメント一覧
まだ、コメントがありません