最小限のDockerコンテナ作成
やぁ、楽しいDockerの世界へようこそ。
とりあえずまずはDockerコンテナを作ってみよう。最小限のコードはこれだ。
$ docker run -it #{利用したいイメージ} /bin/bash
-it
オプションはコンテナ内で操作したい場合は必須のオプションなので、開発環境などの構築時にはおまじないとして覚えておこう。
利用したいイメージはここで探すといい。
https://hub.docker.com/explore/
例えば
$ docker run -it rails /bin/bash
だとRuby on Railsがすでに導入されたDockerコンテナができあがる。
RubyのインストールもRailsのインストールもしなくていいのだ。
コンテナに名前をつける
最小限のコードだと、管理する際のコンテナ名が適当に設定されてしまうので、名前をつけてやろう。
--name
オプションでコンテナ名を指定してやることができる。
$ docker run --name #{任意のコンテナ名} -it #{利用したいイメージ} /bin/bash
適当に設定された名前だと次回以降に起動する時にちょっと面倒なので、できるだけつけておこう。
ちなみにホストマシンで$ docker ps -a
するとホストマシン内にあるDockerコンテナのリストが表示される。
ホストマシンのファイルをコンテナ内でも使う
ホストマシンにあるソースをDockerコンテナ内でも使いたい?
ではホストマシンとDockerコンテナ間でディレクトリを繋いでしまおう。
-v
オプションでできるぞ!
$ docker run -v #{ホストマシンの任意のディレクトリ}:#{Dockerコンテナ内の任意のディレクトリ} -it #{利用したいイメージ} /bin/bash
これで例えば...
$ docker run -v /usr/local/src/project:/usr/src/app -it #{利用したいイメージ} /bin/bash
とすればコンテナ内の/usr/src/appからホストマシンの/usr/local/src/projectを参照できるわけだ。
コンテナにホストマシンのポートをバインドする
ん?railsアプリケーションでブラウザからポート3000でアクセスするのがめんどくさい?
それならポート80番でつなげるようにしちゃおう。
-p
オプションを使って-v
オプションと似たようにバインドできる。
-v
オプションとは記載する順が逆になるので注意すること。
$ docker run -p 3000:80 -it rails /bin/bash
$ docker run -p 80:3000 -it rails /bin/bash
これで、ブラウザからポート指定しなくてもアプリケーションが確認できるはずだ。
コンテナに環境変数を設定する
環境変数を設定するには?-e
オプションがある。
$ docker run -e #{環境変数名}=#{値} -it #利用したいイメージ} /bin/bash
dockerイメージのバージョンを指定する
古いDockerイメージを利用したい?ならそのバージョンを指定してやろう。
$ docker run -it #{利用したいイメージ}:#{利用したいバージョン} /bin/bash
これで君の開発環境はDockerに移行できる。
バージョンは先程紹介したDockerHubから確認するのがいいだろう。
例えばApacheのバージョン一覧はこうなっている。
https://hub.docker.com/_/httpd/
docker run時の初期ディレクトリを変更したい
お、今度は$ docker run
した時のディレクトリがルートから始まるのが気に入らない?このオプションを使うといい。
$ docker run -w #{コンテナ内のディレクトリ} -it #{利用したいイメージ} /bin/bash
これで、起動したら指定したディレクトリがカレントディレクトリになる。
おさらい
最後に、これらを使って君のRailsプロジェクトの開発環境をDockerコンテナ化してみよう。
$ docker run --name #{任意のコンテナ名} -v #{ホストマシンのRailsプロジェクトのディレクトリ}:/usr/src/app -p 3000:80 -e RAILS_ENV=development -w /usr/src/app -it rails:4.2 /bin/bash
$ docker run --name #{任意のコンテナ名} -v #{ホストマシンのRailsプロジェクトのディレクトリ}:/usr/src/app -p 80:3000 -e RAILS_ENV=development -w /usr/src/app -it rails:4.2 /bin/bash
このコマンドでは
-
--name
: コンテナに名前をつけてやり -
-v
: ホストマシンのディレクトリにコンテナ内/usr/src/appからアクセスできるようにして -
-p
: ポート80番でコンテナのポート3000番にアクセスできるようバインドして -
-e
: 環境変数RAILS_ENVにdevelopmentを設定 -
-w
: 起動時にコンテナ内の/usr/src/appに移動 - Rails:4.2が導入されている
コンテナを作成した。
これで君の開発環境はDockerで立ち上がり、そして君はコンテナ内にいるはずだ。
コンテナ内では(railsの場合)rails server
を起動するだけで、あとはブラウザで確認だ!