Blog株式会社インテリジェントテクノロジーの技術情報ブログです。2014-02-26DockerでApache+PHP+mysqlDocker櫻です。最近Dockerが流行の様なので少し触ってみました。使い捨てに出来る環境が数秒で起動出来るのは素晴らしいですね。sshdapachemysqldをsupervisorで起動する方式のコンテナの作成方法(Dockerfileの書き方)のメモです。CentOS6.5のコンテナが出来上がります。contextの容量が以上に大きくなっていったのでMacから直接操作するのは諦めてCentOS6.5でコンテナの作成は行いました。一つのコンテナ内で複数のサーバ起動する場合はsupervisorを使うのがお手軽らしいため、supervisorにお任せしています。CentOSではepelにパッケージがあるのですが、これを利用したところCPUの使用率が100%になったため、easy_installでインストールできるバージョンを利用しました。ホストコンテナを動作させる環境はboot2docker等を利用すれば良いのですが、Dockerfileの作成中はコンテナと同じLinuxを利用するとパッケージ名などが調べやすいと思います。いうことでまずはCentOSにdockerをインストールします。epelにdockerが追加されているため、yumでインストールする事が可能です。docker注意点はパッケージ名がdocker-ioという事くらいでしょうか。(dockerだと別の物がインストールされます)最後に自分をdockerグループに追加しています。これを省略するとdockerコマンドを実行する際に毎回sudoが必要になります。versionでバージョン情報が表示されればOKです。Dockerfiledockerのインストールが出来たので、コンテナ(Dockerfile)の作成に入ります。CentOSのコンテナを作成するため、FROMはcentosを指定しています。プロキシを利用している環境であれば、その指定もしておきます。http://proxy.example.comコンテナへ必要なパッケージをインストール以下のパッケージをコンテナ内で利用します。yumでインストールするものopenssh-serverhttpdphpphp-mbstringmysql-serverphp-mysqlpython-setuptoolseasy_installでインストールするものsupervisorこれらをインストールするために、Dockerfileに以下の様に追加します。次にsshの設定です。*1コンテナ作成の前に、鍵ペアを作成します。./id_rsaid_rsa、id_rsa.pubが作成されるので、id_rsa.pubをコンテナの中の~/.ssh/authorized_keysに入れる事になります。公開鍵をauthorized_keysへ追加するために、Dockerfileに以下を追加します。/root/.ssh/authorized_keys~/.ssh~/.ssh/authorized_keysのパーミッションが不適切だった場合、ログイン出来なくなるので注意が必要です。*2このままだとログイン出来なかったため、PAMを無効にしています。/etc/init.d/sshdでsshdを一度起動すると、サーバの鍵の生成が行われます。stopmysql続いてmysqldの設定です。sshdと同様に/etc/init.d/mysqldで起動するとデータベース作成を行ってくれます。このスクリプト内で/etc/sysconfig/networkを参照しているため、ダミーのファイルを作成しています。途中でついでにrootのパスワードも設定しています。stopの様にしておけばOKです。supervisor次にsupervisorの設定です。supervisor.confはepelの物をインストールした際のファイルを利用しました。*3sshd、mysqld、httpdを起動するため、supervisor.confに以下の内容を追加します。-D[program:mysqld]command=/usr/bin/mysqld_safeDockerfileには上記のsupervisor.confのコピーとログ出力先の/var/log/supervisor/を作成を追加します。/etc/supervisord.confEXPOSEとCMDsshd、httpd、mysqldがそれぞれ22、80、3306ポートを利用。supervisorの起動を指定。["/usr/bin/supervisord"]ビルドと起動Dockerfile、ssh用の鍵ペア、supervisor.confが準備できたらいよいよコンテナのビルドです。tagは適当な名前を指定。Dockerfileを置いてあるディレクトリで以下のコマンドを実行すると、コンテナのビルドが開始されます。.コンテナ内で必要なパッケージのインストール等が進みます。問題なく完了すれば、centos:というイメージが作成されます。MBコンテナは以下のコマンドで起動できます。pオプションはポートの指定で、コンテナ外:コンテナ内の指定です。http://localhost:10080/等で行う事ができます。importで読み込む事ができます。centos:importedでインポートするとインポート先で直に起動する事が出来ます。今回作成したコンテナはgzip圧縮した状態で155M程度とそれほど大きくはありません。まとめ噂のDockerを触ってみました。慣れるまでは何がどうなっているのか良くわかりませんが、使いこなせる様になると非常に便利だと思います。Endのテストが出来るサーバを立ち上げると言った事が可能になります。コンテナをexportすると、boot2dockerだけ準備しておいてもらえればどこでも簡単にデモを行ったりできます。Dockerfileとsupervisor.confは↓を参照してください。Functionsこんにちは。社が提供するサーバレス技術であ...2014-08-27Laravel4-Vagrantこんにちは、石尾です。Karmaこんにちは、間藤です。