248
219

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

docker run(コンテナ作成)する時のオプションあれこれ

Last updated at Posted at 2017-01-28

最小限の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を起動するだけで、あとはブラウザで確認だ!

248
219
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
248
219

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?