WBC TECH BLOG

Will Be Computingのメンバーによるブログです。

*

boot2dockerでDockerを動かす

   

この文章ではMac上でboot2dockerを使って、Dockerを使う方法を説明します。
説明するのは、Dockerコンテナ上で一通りの作業が出来るようになるところまでです。
使用するboot2dockerのバージョンはv1.3.1です。
boot2dockerのインストールは説明しません。

http://boot2docker.io/

boot2dockerとは何か

WindowsやMacからDockerを簡単に利用できるようにするものです。
本来DockerはLinuxのアプリケーションなので、WindowsやMac上の仮想環境(Linux)で使おうとした場合、

1.仮想環境の起動
2.仮想環境にログイン
3.仮想環境上でDockerコマンド実行

という手順を踏む必要がありますが、boot2dockerを使えば、この手順をある程度省略できます。
特にMacではターミナルから、dockerコマンドを使えるようになります。
つまり上記手順の2と3を意識しなくて済むようになります。

boot2dockerは仮想環境とCLI(Boot2Docker-cli)で構成されています。
仮想環境はVirtualBox上のTiny Core Linuxで、これにDockerがインストールされています。

基本操作

boot2docker
https://github.com/boot2docker/boot2docker/blob/master/README.md

boot2dockerの起動

#初期化(一度実行すれば良い)
$boot2docker init
#仮想環境起動(起動済みなら不要)
$boot2docker up
#Docker関連の環境変数を設定
#.bashrcなどに$(boot2docker shellinit > /dev/null 2>&1)と書いておくと良い
$boot2docker shellinit

Docker

単純にDockerを使う場合、boot2docker upした後、boot2dockerを使うことはありません。
以降はdockerコマンドを使って作業することになります。

http://docs.docker.com/reference/commandline/cli/

Dockerの動作確認

#コンテナ一覧(起動中のみ)
$docker ps
#コンテナ一覧(停止中を含む)
$docker ps -a
#Docker Imageのダウンロード(ここではcentos7)
$docker pull centos:centos7
#コンテナ上でコマンド実行
$docker run centos:centos7 /bin/ls /
#centos上で実行された /bin/ls / の結果が表示される
$docker run centos:centos7 /bin/echo 'Hello, world'
$docker ps -a
#docker runした数だけコンテナが増える
$docker ps
#しかも全て終了している...

どんなDocker Imageが配布されているかはdockerhubを参照してください。
Imageはいろいろ仕込む事が可能なので、悪意のあるImageも可能性としてありえます。
信用できるOFFICIAL REPOなImageだけを落としてください。
なおプライベートなDocker Registryを立てることもできます。

コンテナの名前

dockerコンテナは、CONTAINER IDか名前(NAME)で一意に指定できます。
docker psで出力される結果の先頭の文字列がCONTAINER IDで、最後の文字列が名前です。
オプションをつけない場合、どちらも自動的に設定されます。
docker run --name container_nameとすると指定した名前でコンテナが作られます。
名前の再設定は、提案されていますがversion 1.3時点では出来ません。

コンテナ内での作業

docker runするとコンテナがどんどん増えていきます。また、すぐに停止しています。
実際の運用ではコンテナの中で作業する必要があったり、サーバープロセスのように、
起動したままの状態を維持したい場合があります。
そのような場合には、以下のオプションを設定します。

-i コンテナとの対話を出来るようにする
-t ttyを有効にする
-d コンテナをバックグラウンドで動かす

#対話可能なコンテナをexampleという名前でバックグラウンドで起動しシェルを動かす
$docker run -itd --name example centos:centos7 /bin/bash
#statusがUpであることを確認
$docker ps
#コンテナに接続
$docker attach example
#centos側のlsを実行
[centos]$ ls
#抜ける時はCtl+p Ctl+q
#停止していないことを確認
$docker ps

attachしているときにシェルでexitすると、コンテナが停止してしまいます。
停止したコンテナはrestartで再起動します。

#attachし直せば、再び繋がる
$docker attach example
#attach時にexitすると
[centos]$ exit
#コンテナが停止する
$docker ps
$docker ps -a
#コンテナを再起動する場合は名前かIDを指定してrestart
$docker restart example
#コンテナに入らずにコンテナを停止したい場合はstopを使う
$docker stop example
$docker ps -a

ローカルファイルをコンテナに持ち込む

コンテナを開発環境として使用する場合、ホスト側にあるファイルやディレクトリをコンテナ側に、
持ち込みたくなります。この場合は-v ホスト側ディレクトリ:コンテナ側マウントポイントで、
ホスト側のディレクトリをコンテナにマウント出来ます。

$mkdir hello
$cd hello
$echo "Hello, world" > hello.txt
#カレントディレクトリをコンテナの/helloにマウントする
$docker run -itd --name example -v "$(pwd)":/hello centos:centos7 /bin/bash
$docker attach example
[centos]$ echo /hello/hello.txt
[centos]$ Hello, world

-vオプションは複数指定できます。

まとめ

自分で仮想環境を立ててLinuxを入れてもDockerを使うことは出来ますが、boot2dockerを使うと、dockerをあたかもWindowやMacのコマンドであるかのように使うことが出来ます。
中間層としての仮想Linuxが消えるわけではないですが、ほとんど意識することがなくなるため、非常に扱いやすくなります。特にローカルディレクトリをマウントするのが手軽になるため、WindowsやMacで開発して、コンテナで動作確認するのが簡単になります。

 - boot2docker

広告

広告

Message

  関連記事

関連記事はありませんでした