my coredump

自分用の公開メモです。主にプログラムのこととか書くはず。

docker on CoreOS さわった

いろんなところで騒がれているようだけどようやく手を動かしてみた。
チュートリアルやり始めただけだけど。

VirtualBoxでCoreOS動かしてその上でdockerを動かす方法。
環境汚さないし、なにより素早く試せるのでお勧めできる組み合わせ。

CoreOS(とdocker)の導入

CoreOSの導入は公式を参照した。
https://coreos.com/docs/running-coreos/platforms/vagrant/

git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant\
vagrant up
vagrant ssh

これでCoreOSが立ち上がった。
何より感動したのは速さ。
CentOSでは初回のvagrant upは結構時間かかったし起動もそれなりだったけど、CoreOSはほんの数秒から十数秒くらい(体感)。

cygwin warning:
  MS-DOS style path detected: C:/Users/xxx/.vagrant.d/insecure_private_key
  Preferred POSIX equivalent is: /cygdrive/c/Users/xxx/.vagrant.d/insecure_private_key
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Last login: Tue Mar 25 09:25:37 UTC 2014 from 10.0.2.2 on ssh
   ______                ____  _____
  / ____/___  ________  / __ \/ ___/
 / /   / __ \/ ___/ _ \/ / / /\__ \
/ /___/ /_/ / /  /  __/ /_/ /___/ /
\____/\____/_/   \___/\____//____/

起動時にcygwin warningが出たけどまあとりあえず気にしない。
パス関連のことを言っているらしい。

既にdocker入ってる。

core@localhost ~ $ docker -v
Docker version 0.9.0, build 2b3fdf2

Interactive commandline tutorial

https://www.docker.io/gettingstarted/#

大変わかりやすい。
dockerの基本的なコマンドが分かる。

一応概念的に把握した範囲で書くと以下の様な感じ。
間違っている可能性はあるし適当なのはその通り。

dockerはOSのイメージ持ってきて、コンテナ起動して、コマンド実行する。
コマンドが終了するとコンテナも終了する。
コンテナはとりあえず仮想マシンと読み替えても良い。

コマンドの実行結果やインストールしたものとかは消えるわけじゃないけど、そのままじゃ使いまわせない。
使いまわすためにはコミットする。
Gitとかだとコミット+タグ付けみたいな印象を持った(個人的感想)。

以下はチュートリアルで使ったコマンド。
一応ざっくりしたコメント付けたけどチュートリアルやったほうが良い。

# バージョン
docker version
# イメージ探す
docker search tutorial
# イメージダウンロード
docker pull learn/tutorial
# コマンド実行
docker run learn/tutorial echo "hello world"
# コマンド実行
docker run learn/tutorial apt-get install -y ping
# 起動中のコンテナ一覧
docker ps -l
# IDで指定したコンテナの保存
docker commit {ID} learn/ping
# 保存したイメージから実行
docker run learn/ping ping google.com
# 起動中のコンテナ一覧
docker ps
# IDで指定したコンテナの情報を見る
docker inspect {ID}
# 手元のイメージ一覧
docker images
# アップロード
docker push learn/ping

docker ps -llオプションが何を表すのかよく分からなかった。
ドキュメントにも書いてない…

Dockerfile Tutorial

https://www.docker.io/learn/dockerfile/

次はこれを読む。
さっき手動でコマンド打ってたのが自動化できると思えば良い(はず)。
環境構築とかできる。

さっきのチュートリアルよりは長文だけど平易な英語で書かれているので多分大丈夫。
インストラクションて呼ばれる命令を書いていくらしい。
まだFROMとRUNってやつしか知らない。

FROMはイメージを指定する。
docker search centosとかして探したものを指定する。

RUNは実行したいコマンドを書く。
1つRUNするごとにdocker commitもされる。

インストラクションを書いたDockerfileを以下のような方法で実行すると良い。

# カレントディレクトリにDockerfileがある場合
docker build .
# 標準入力から流し込む場合
docker build - < Dockerfile
# Githubリポジトリから利用する場合
docker build github.com/creack/docker-firefox

引き続き読んでく。

その他

利用可能なイメージは以下から探せる。
https://index.docker.io/