CentOS7.3にDockerをインストール

CentOS7.3のminimalにDockerをインストールします。インストール後にbusyboxイメージを使用したデータボリュームコンテナを立てて、コンテナ内で永続的なデータを保存できるか確認します。

ここ最近ブレークしてきたDockerというコンテナ技術を勉強してみようと思います。目標は現在VPSで運用しているWebサーバやMailサーバ、DBサーバをDockerのコンテナ上で運用すること。期待する効果は可用性や信頼性・スケーラビリティーの向上です。

1.Dockerのインストール

まずは公式サイトの説明に従い始めてみます。説明によるとCentOSのインストール条件は「64bit でインストールされた何らかの CentOS バージョンを必要とします。さらに、CentOS 7 で動作する kernel は少なくとも 3.10 以上が必要です。」とのことなので念のため確認します。

大丈夫でした。ここでyumの公式リポジトリのインストール情報を取得します。

バージョンは1.12.5のようです。

CentOS公式リポジトリよりもDocker公式リポジトリの方がバージョンが新しいようなのでそちらを使用してインストールします。以下のようにDocker用のリポジトリファイルを新規に作成します。

上記リポジトリファイルを保存したら、yumでインストールします。

インストールが終わったら以下のようにバージョンを確認します。

バージョン1.13.1がインストールできました。

2.Dockerの起動と確認

Dockerの状態を確認し起動と自動起動の設定を行います。

起動していないようなので起動します。

再起動時も自動起動するようにします。

3.Dockerイメージの取得

DockerHubからコンテナイメージをダウンロード(Pull)します。

以下のように、まずはBusyboxとCentosをPullします。

保存したイメージを確認します。

busyboxとcentosイメージがローカルに保存されています。busyboxは最小限のコンパクトなLinuxとして知られており1.11Mと極小サイズ。それに比べてcentosは192MBもありますが多機能なのでしょうがないのでしょう。nginxとかmysqlとか機能を限定したイメージを指定すればサイズは小さくなるようです。

4.データボリュームコンテナの作成

Dockerではイメージから作成したコンテナ内のデータは通常コンテナが終了すると消えてしまいます。ですが、アプリケーションを運用する際にデータを保持しておくことは必須の要件です。そこでコンテナでデータを保持できる仕組みデータボリュームコンテナを作成します。詳細は公式サイトの「コンテナでデータを管理する」を参照してください。

以下はbusyboxイメージを使用して datavolという名前のコンテナを起動しています。

run コマンド 新しいコンテナを起動します
-it オプション 標準入力・疑似コンソールを有効化します
-v オプション データボリューム /data をコンテナ内に作成します
–name オプション コンテナに名前(datavol)を付けます

起動したら、/data内にファイルを作成してみます。

exitでコンテナを抜けます。

作成したファイルはどこにあるのか確認します。inspectコマンドの引数にコンテナ名datavolを指定して調べます。

上記「”Mounts”」ブロックの”Source”の値が実ディレクトリになります。ファイルが存在するかhost上で確認してみます。

ありました。

作成したdatavolコンテナを起動して再接続してみます。

start コマンド 既存コンテナを起動します
-ai オプション コンテナに接続し標準入力を有効にします

以下でファイルを確認します。

ありました。exitでコンテナを抜けます。

5.他コンテナからデータボリュームコンテナを参照

centosイメージから作成したコンテナからデータボリュームコンテナを参照します。

以下の用にcentosイメージコンテナ起動時に–volumes-fromでコンテナ名「datavol」を指定します。またコンテナが終了したらコンテナを削除するように–rmオプションを指定しています(198MBのコンテナを残しておくとディスクを圧迫するので)。

データボリュームが見えるか確認します。

ありました。データも見えます。

centosコンテナコンソールからexitで抜けた後、コンテナが残っていないかps -aオプションで確認します。

datavolコンテナ以外はありません。起動したcentosコンテナは”–rm”オプションによりコンテナ終了と同時に削除されています。

結論

コンテナ間でデータを連携するには、まずデータボリュームコンテナを作成しデータを保存しておけるボリュームを確保する。

他のコンテナからデータボリュームにアクセスするには、コンテナ起動時に–volumes-fromオプションで作成したデータボリュームコンテナ名を指定する。この方法ならどのコンテナからも同じ階層として永続データにアクセスできます。

スポンサーリンク
レクタングル大広告




レクタングル大広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大広告