目的
-
今回は Docker を触ってみるという目的のための投稿です。
-
とても有意義なことができるようになるわけではありません。
-
Ubuntu で動かすのがおすすめのようなので、 Vagrant で用意します。
- 仮想マシンの上で仮想マシンを動かすというよくわからない感じになりますが。。
-
Docker とは何か。他のツールとの違いは?というのは こちら でまとめています。
Vagrant で Ubuntu 用意
- Vagrant での仮想マシンの用意はここでもまとめているが、せっかくなので Ubuntu 14.04 を使用する
# Ubuntu 14.04 の Box を取得
$ box add ubuntu1404 http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
# 初期化
$ vagrant init ubuntu1404
# Vagrantfile の config.vm.network のコメントを外した後、仮想マシンを起動
$ vagrant up
# 仮想マシンにログイン
$ vagrant ssh
Docker インストール手順
-
ここからはすべて Vagrant で用意した仮想マシン上で操作
-
Install Page for Ubuntu 14.04 を参考におこなっている
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
インストール後にバージョン確認
$ docker -v
Docker version 0.9.1, build 3600720
Docker image の取得から登録まで
Docker 上で動かす OS (イメージ) の取得
- docker image を docker index から取得
# docker index の表示
$ sudo docker search ubuntu
# 任意のイメージを取得
$ sudo docker pull ubuntu
# 取得したイメージの確認
$ sudo docker images
# 任意のイメージ詳細情報表示
$ sudo docker inspect REPOGITORY:TAG
# 任意のイメージ削除
$ sudo docker rmi REPOGITORY:TAG
- 今回 REPOGITORY:TAG となっている箇所はすべて、 ubuntu:latest で作業する
取得したイメージの実行
- コンテナの作成
# コンテナの作成
$ sudo docker run REPOGITORY:TAG echo "Hello, Docker"
Hello, Docker
# 作成したコンテナの表示
$ sudo docker ps -a
# コンテナの削除
$ sudo docker rm CONTAINER_ID
イメージを作成する
- 自分でカスタマイズした状態のイメージ作成
# docker コンテナ内で作業用意
$ sudo docker run -i -t REPOGITORY:TAG /bin/bash
# vim をインストールする
root@xxxxxxxxxxxx:# sudo apt-get install vim
# docker コンテナからぬける
root@xxxxxxxxxxxx:# exit
# 作成したコンテナの確認
$ sudo docker ps -a
# コンテナのイメージを作成する
$ sudo docker commit CONTAINER_ID IMAGE_NAME(username/vim)
# 作成したイメージの確認 (username/vim という REPOGITORY があることを確認する)
$ sudo docker images
# 作成したイメージを元にコンテナを作成
$ sudo docker run -i -t username/vim:latest /bin/bash
# vim が起動できれば OK
Docker index への登録
- カスタムイメージを docker index に登録
- 事前に Docker のアカウントを取得しておく必要あり
- 必要に応じて取得 : https://www.docker.io/
# Docker へのログイン
$ sudo docker login
# 任意のイメージを push する
$ sudo docker push username/vim
Dockerfile の使用
- Dockerfile は環境構築の手順を記載できる
- Dockerfile を作ることで、イメージの取得から新たなイメージの作成までを build コマンドで行えるようになる
Dockerfile
# Base Image の取得
FROM ubuntu:latest
# Author 情報を記載(必須ではない)
MAINTAINER kasaharu
# build 時に実行すること
RUN apt-get install -y vim
# コンテナを実行した時のコマンド
CMD ["echo", "running!"]
- Dockerfile の実行
- 作られるイメージの REPOGITORY 名と TAG 名を指定できる
# REPOGITORY 名と TAG 名を指定して build を実行
$ sudo docker build -t REPOGITORY:TAG .
# イメージ一覧の表示(FROM で指定したイメージと build 時に指定したイメージがあれば OK)
$ sudo docker images
# 今作られたイメージからコンテナを作成(CMD で指定したコマンドが実行される)
$ sudo docker run REPOGITORY:TAG
参考
- 公式ページ
- Docker 入門 ~IMMUTABLE INFRASTRUCTURE を実現する~