Docker 101
Dockerとは
PaaS を提供していた dotCloud 社が、2013年3月に発表したオープンソースの仮想化ソフトウェア。同年10月には社名を Docker に変更し、 Docker のビジネスにフォーカスしていく方針を発表した。
— dotCloud, Inc. is Becoming Docker, Inc. | Docker Blog
Dockerを使用することで、アプリケーションとその実行環境を「コンテナ」という単位で管理できる。コンテナは軽量で可搬性が高く、開発環境から本番環境まで一貫した環境を提供できる点が特徴。
今回達成したいこと
MacOS 上で boot2docker を利用し Docker 環境を構築する。また、CentOS のコンテナ立ち上げるまでの動きを見ていく。
環境構築手順
1. 必要なソフトウェアのインストール
今回利用するソフトウェアとバージョンは以下の通り:
- VirtualBox 4.3.14
- Docker 1.1.1
- boot2docker 1.1.1
VirtualBox のインストール
$ brew cask install virtualbox
Docker/boot2docker のインストール
$ brew install boot2docker
※ boot2docker をインストールすると、依存関係にある docker も自動的にインストールされる。
2. boot2docker の初期化と起動
初期化
$ boot2docker init
このコマンドにより boot2docker 用の仮想マシンが作成され、必要な設定が行われる。
起動
$ boot2docker up
2014/07/27 11:22:59 Waiting for VM to be started...
...........
2014/07/27 11:23:32 Started.
2014/07/27 11:23:32 To connect the Docker client to the Docker daemon, please set:
2014/07/27 11:23:32 export DOCKER_HOST=tcp://192.168.59.103:2375
boot2docker が起動すると、Docker daemon に接続するための環境変数が表示される。この環境変数を .bash_profile
に追記する。
$ echo 'export DOCKER_HOST=tcp://192.168.59.103:2375' >> ~/.bash_profile
$ source ~/.bash_profile
3. Docker 環境の確認
環境が正しく構築できているか確認する:
$ docker version
Client version: 1.1.2
Client API version: 1.13
Go version (client): go1.3
Git commit (client): d84a070
Server version: 1.1.2
Server API version: 1.13
Go version (server): go1.2.1
Git commit (server): d84a070
$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]
4. CentOSコンテナの実行
イメージのダウンロード
$ docker pull centos
Pulling repository centos
cd934e0010d5: Download complete
1a7dc42f78ba: Download complete
511136ea3c5a: Download complete
34e94e67e63a: Download complete
これにより、CentOS 6とCentOS 7のイメージがダウンロードされた:
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos centos7 1a7dc42f78ba 2 weeks ago 236.4 MB
centos latest 1a7dc42f78ba 2 weeks ago 236.4 MB
centos centos6 cd934e0010d5 2 weeks ago 206.9 MB
コンテナの起動
CentOS 6の場合:
$ docker run --interactive --tty centos:centos6 /bin/bash
CentOS 7の場合:
$ docker run -it centos:centos7 /bin/bash
--interactive
(-i
) と --tty
(-t
) オプションにより、対話型の bash 環境が提供される。
5. コンテナの管理
実行中のコンテナの確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0cfd8af88b83 centos:centos7 /bin/bash 2 minutes ago Up 14 seconds hopeful_yonath
コンテナの停止
$ docker stop 0cfd8af88b83
0cfd8af88b83
コンテナの再起動と接続
$ docker start 0cfd8af88b83
0cfd8af88b83
$ docker attach 0cfd8af88b83
bash-4.2#
コンテナの削除
起動中のコンテナを削除しようとすると失敗する:
$ docker rm 0cfd8af88b83
Error response from daemon: Impossible to remove a running container, please stop it first or use -f
614c80e55e30
2014/07/27 11:41:03 Error: failed to remove one or more containers
一度停止し、状態を確認したうえで再度削除する:
$ docker stop 0cfd8af88b83
0cfd8af88b83
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0cfd8af88b83 centos:centos7 /bin/bash 5 minutes ago Exited (-1) 7 seconds ago hopeful_yonath
$ docker rm 0cfd8af88b83
0cfd8af88b83
イメージの削除
$ docker rmi centos:centos7
Untagged: centos:centos7
Deleted: 1a7dc42f78ba213ec1ac5cd04930011334536214ad26c8000f1eec72e302c041