読者です 読者をやめる 読者になる 読者になる

はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

HomebrewでDockerをインストールしてみた

Docker VirtualBox mac

f:id:secret_hamuhamu:20160413035028j:plain
タイトル通りです。
HomebrewでDockerをインストールしたので、まとめる。

環境構成

  • OS X 10.11.4
  • VirtualBox 5.0.16
  • Docker 1.10.3
  • docker-machine 0.6.0

インストール

Homebrewを使って必要なツールをインストールします。

Dockerは、Linuxの仕組みの上で動いているためLinux上で動かす必要があります。
そのため、仮想化ツールが必要です。
今回は、VirtualBoxを使用します。

VirtualBox以外を使いたい方は、Supported Driversをご参照ください。

以下、インストールコマンド。
VirtualBoxのインストールには、brew caskを使用。

$ brew cask install virtualbox
$ brew install docker
$ brew install docker-machine


Docker ToolBoxをインストールすれば、Docker Qickstart TerminalやKitematicといったDockerをGUIでお手軽に使えるツールが入ってきます。
私は、GUIが苦手なので使いません。

ちなみに、Docker ToolBoxのインストールコマンドはこちら。

$ brew cask install dockertoolbox

インストール確認

$ virtualbox --help
Oracle VM VirtualBox Manager 5.0.16

$ docker -v
Docker version 1.10.3, build 20f81dd

$ docker-machine -v
docker-machine version 0.6.0, build e27fb87

docker-machineコマンド

Docker用の仮想マシンを作成・削除、ssh、環境変数の設定といったことを行うコマンド。

仮想マシン作成

test-dockerという名前で、仮想マシンを作成。

$ docker-machine create --driver virtualbox test-docker

そこそこ、時間がかかります。

仮想マシン確認

test-dockerが作成されたか確認。

$ docker-machine ls
NAME          ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
test-docker   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.10.3

仮想マシンステータス確認

Runningであれば、仮想マシンにsshできます。

$ docker-machine status test-docker
Running

仮想マシンにssh

$ docker-machine ssh test-docker

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.10.3, build master : 625117e - Thu Mar 10 22:09:02 UTC 2016
Docker version 1.10.3, build 20f81dd

sshしたので、ユーザ名とホスト名が、docker@test-dockerになった。

dockerコマンド

sshもできたので、これからDockerの世界である。
コンテナはDocker Hubというコンテナが公開されているサイトから探せばいいと思う。

今回は、CentOS7のイメージを使いコンテナを作成する。

イメージをダウンロード

Docker Hubからイメージをダウンロードする。
docker pull {イメージ名(リポジトリ)}:{タグ名(バージョン)}

$ docker pull centos:7

イメージの確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              7                   778a53015523        10 days ago         196.7 MB

イメージを元にコンテナを作成

  • 作成のみで起動をしないのであればcreate
$ docker create -it --name centos7 centos:7
  • 作成+起動をしたいのであればrun

detachを付けておくことで、runと同時にatach(コンテナにログイン)されずに済む。

$ docker run -it --detach --name centos7.01 centos:7

nameはつけなくても良いが、つけたほうがわかりやすいと思うのでつけておく。
ちなみにnameはユニークです。

コンテナの確認

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
a25bd3d016d6        centos:7            "/bin/bash"         11 seconds ago      Created                                 centos7
8be21ff35b58        centos:7            "/bin/bash"         56 seconds ago      Up 56 seconds                           centos7.01

コンテナの削除

docker rm {name, コンテナID}

$ docker rm centos7.01
$ docker rm a25bd3d016d6

コンテナ全部削除したい場合は、以下のコマンド。

$ docker rm `docker ps -a -q`

コンテナにアタッチする

  • コンテナ生成と同時にアタッチ

hostnameをつけておくとホスト名を指定できる。

$ docker run -it --hostname hoge centos:7

exit でアタッチから抜けることができる。

  • 起動中のコンテナにアタッチ
$ docker start 460776bfc403
460776bfc403
$ docker attach 460776bfc403

アタッチせずにコマンドを実行

アタッチして exit してしまうとコンテナがストップしてしまいます。
ちょっとコマンドをうって作業したい時とか毎回、コンテナがストップすると不便です。

execコマンドを使いアタッチせずにコマンドを実行します。

  • 1コマンドだけ実行
$ docker exec 460776bfc403 hostname
hoge

コマンドを実行し終えると呼び出し元の仮想マシンにコンテナをストップさせずに戻ってきます。

  • 複数のコマンドを実行
$ docker exec -it 460776bfc403 /bin/bash
[root@hoge /]# hostname
hoge
[root@hoge /]# exit
exit