CoreOSでDockerを使ってみた


 前回、Dockerがどういうものか勉強しました。早速インストールして使ってみたいと思います。
すみません、さくらのクラウドを使用したため、インストール手順はすっ飛ばします。
(CoreOSのアーカイブがあるためインストールした状態のサーバが作成されます)

 

rootパスワードの設定

 通常CoreOSは「core」という管理者ユーザが作成され、sudo を使って管理していくのがベターとされています。ただ私はsudo をつけるのが面倒なためよくrootで作業をしてしまいます。(まねしないように)

パスワード変更します。

 

CoreOSのアップデート

 最新のCoreOSでないとetcd2といった最新機能が使用できなかったりしますので、セキュリティのことも考えて最新版を使用するようにしましょう。

update_engine_client -update というコマンドを実行するとアップデートします。下の例はUpdate failedとなっていますが、これは既に最新版だからです。

 

CoreOSのバージョン確認

アップデートした後は、バージョンを確認しておきましょう。
cat /etc/os-release で確認できます。

 

イメージの作成

イメージの作成はCoreOS環境で作らずに、Dockerがインストールされているローカルマシンで作ります。
(しきたり?)

作成したDockerfileには次のような内容を書きます。

  • FROM httpd:2.4
    docker-libraryにある「httpd」イメージファイルのうち、「2.4」というタグが付けられたものをベースイメージとして使用す るという意味です。
  • COPY ./public-html/ /usr/local/apache2/htdocs/
    Dockerfileと同じディレクトリ内にある「public-html」ディレクトリの中身をイメージファイル内の「/usr/local/apache2/htdocs/」ディレクトリにコピーするという意味です。httpdイメージで提供されるhttpdでは、このディレクトリがDocumentRootに なるように設定されています。

次に公開コンテンツのコピー元となるファイルを作成します。
ここでは「test」と書かれたindex.htmlを作成しています。

最後に docker build コマンドでイメージを作成します。
下のような感じで docker-libraryからベースイメージのダウンロードが開始されます。

-t オプションはイメージ名を指定するオプションです。

Successfully built と表示されればイメージの作成は完了です。

docker images コマンドでイメージが作成されていることを確認しましょう。

作成したimageをCoreOSに転送します。
docker save というコマンドでイメージをファイルに保存します。それをscpなんかで転送してください。

転送したイメージをdocekr loadコマンドでイメージにロードします。

docker images コマンドでイメージがロードされたことを確認しましょう。

 

コンテナの起動

ロードしたイメージを元にコンテナを動かします。
docker runコマンドでコンテナとして動かすことができます。
-t は仮想ターミナルを動かすオプションです。
-p はこのコンテナで使用するポートを指定しています。

docker ps コマンドでコンテナが起動しているか確認しましょう。

 

コンテナに入る方法

起動したコンテナの中で作業するにはdocker execというコマンドを使います。

プロンプトが変わりコンテナ環境のシェルになっていることが確認できます。
用意していたindex.htmlの中身も反映されています。
apacheも起動しているので、ブラウザからアクセスすればページが表示されます。

 

Dockerを使ってみた感想

 かなり使えると思いました。Webアプリケーションなどは、動作環境が様々で、プログラムのバージョンやDBのバージョンなどを考えると環境構築がめんどくさいです。そういったものをコンテナにパッケージングできてしまうのでプログラマ、サーバエンジニア両方が幸せになれるのではないでしょうか。もちろん万能ではないので適した場面で採用していければと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です