Dockerとは
Dockerはコンテナ型の仮想化ツールです。
仮想化ツールといえば、VMWareやVirtualboxなどの仮想化ソフトウェアを思い浮かべるかもしれませんが、
これらはOSごと環境を提供するハイパーバイザ型の仮想化技術と呼ばれます。
それに対し、コンテナ型の仮想化ツールではコンテナと呼ばれる小さな仮想化環境が作成され、それらが同じホストOSを共有します。 その上でサーバミドルウェアやライブラリ、ドライバなどが導入された環境をコンテナ内で提供できるので、よりコンパクトな仮想化が可能です。 また各コンテナは独立して動作するため、いらなくなった仮想環境はすぐに使い捨てることができます。
そのため、特定のアプリケーションを実行するような環境を容易に共有することができ、環境構築の煩わしさを軽減することができます。
DockerイメージとDockerHub
Dockerイメージとは、Dockerコンテナを作成する元となるものです。
オブジェクト指向でいうと、DockerイメージがクラスでDockerコンテナがインスタンスのようなものでしょうか。
DockerではGitのようにリモートリポジトリを作成してイメージを共有することができます。
GithubのようなリモートリポジトリサービスにDockerHubがあるので、そこにイメージをpushして公開することができます。
Docker for Macをインストールする
Docker for macにアクセスし、" DOWNLOAD FROM DOCKER STORE"をクリック。
"Get Docker"をクリック。
dmgファイルがダウンロードできるので、ダウンロードが完了したらdmgファイルをクリック。
くじらアイコンをApplicationに移動。
lancherなりSpotlightなりでアプリケーションを実行。
するとWelcomeメッセージが表示されます。
ダイアログのNextを押していき、Dockerアプリのprivate accessのためアカウントパスワードを入力。
メニューバーにアイコンが出現し、メニューの一番上に" Docker is runnning" と表示されればOK。
Dockerイメージを作成する
Dockerイメージをpull
DockerHub上にアップロードされているDockerイメージからコンテナを作成してみます。
docker pull
コマンドで、DockerHubからイメージをGitのようにpullすることができます。
# Dockerイメージをpull $ docker pull docker/whalesay # Dockerイメージ一覧 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker/whalesay latest 6b362a9f73eb 2 years ago 247MB
pullしたイメージはDocker公式が予め用意しているHelloWorld的なイメージです。
Dockerコンテナを作成する
用意したDockerイメージからDockerコンテナを作成します。
docker run
コマンドで作成可能です。
$ docker run docker/whalesay cowsay boo _____ < boo > ----- \ \ \ ## . ## ## ## == ## ## ## ## === /""""""""""""""""___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/
コンテナの実行成功です。クジラのAAが出現し、booと鳴きます。
docker/whalesay
は先程pull取得したDockerイメージのリポジトリ名です。
ここで使用するコンテナではcowsay というコマンドとbooという文字列を引数に取っています。
ちなみに-d
オプションを付加すると、コンテナがバックグラウンドで実行されます。
$ docker run -d docker/whalesay cowsay boo
b6ca90c1108dbb037b5213cd9ed5537060992903b3e805e0fba46881f4c4babc
実行中のコンテナは、docker ps
で起動することができます。
下の例では実行しているコンテナがないため、何も表示していません。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker ps -a
で、いままでに実行したコンテナを含めて表示できます。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6ca90c1108d docker/whalesay "cowsay boo" 15 seconds ago Exited (0) 14 seconds ago compassionate_khorana ae604513529a docker/whalesay "cowsay bar" About a minute ago Exited (0) About a minute ago romantic_brattain f2ddfcbcd9b5 docker/whalesay "cowsay boo" About a minute ago Exited (0) About a minute ago naughty_nobel
まとめ
いかがだったでしょうか。Dockerを使えば、
などの環境を構築済みの状態で簡単に共有できます。 アプリケーションのハンズオンや新しいライブラリを試したいときに、一度使ってみてはいかがでしょうか。