2014年4月16日水曜日

Docker 0.10.0 を Ubuntu 14.04 で試す



環境


ubuntu 14.04 beta
$ uname -a
Linux krakenbeal-ubuntu1404 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

$ docker version
Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f



必要となるバイナリのインストール


$ sudo apt-get update
$ sudo apt-get install linux-image-extra-`uname -r`

Dockerのインストール


$ curl -s https://get.docker.io/ubuntu/ | sudo sh

インストールできたか、確認
$ docker -v
$ docker version
$ docker help

$ docker version
Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f

dockerのイメージをダウンロード


どんなイメージがあるか調べる
$ sudo docker search ubuntu
$ sudo docker search debian
$ sudo docker search centos
$ sudo docker search fedora
$ sudo docker search learn

ダウンロード
$ sudo docker pull ubuntu:12.04
Pulling repository ubuntu
c0fe63f9a4c1: Download complete 
511136ea3c5a: Download complete 
6170bb7b0ad1: Download complete 
79fdb1362c84: Download complete 

ダウンロードしたイメージの IMAGE ID と SIZE を確認


$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              12.04               c0fe63f9a4c1        4 days ago          231.1 MB

イメージを起動


$ sudo docker run -i -t ubuntu:12.04 /bin/bash
root@d9f0f0c251e7:/# 

終了


root@d9f0f0c251e7:/# exit

イメージから作られたコンテナのリストを見る


$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
a26729548dae        ubuntu:12.04        /bin/bash           54 seconds ago      Exited (0) 19 seconds ago                       determined_poincare   

コンテナをイメージに変換


$ sudo docker commit a26729548dae my_image:001

例えば、ubuntu:12.04 をのコンテナにruby-2.0をインストールしたイメージを、ubuntu:12.04_ruby2.0というコンテナ名で保存するとよい。
コンテナ起動のたびに、バイナリをインストールする手間が省ける。
イメージを消さずに使い回すばあい、覚えにくいコンテナIDを入力しなければならない。
覚えやすいタグのついたコンテナにした方が楽。

イメージのリストは以下のようにして確認
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              12.04               c0fe63f9a4c1        4 days ago          231.1 MB

不要なコンテナの削除


$ docker rm 150ea93b2d6a
$ docker rm 7568bd96a75e faed7b223e26
$ docker rm `sudo docker ps -a -q`
$ docker rm $(sudo docker ps -a -q)

不要なイメージの削除


$ docker rmi ubuntu:10.04
$ $ docker rmi ubuntu:13.10 ubuntu:saucy

Dockerfileを利用して、ssh server入りのコンテナを作る


Dockerfileの作成


$ vi Dockerfile

不要なコンテナの削除


$ sudo docker rm `sudo docker ps -a -q`
$ sudo docker rm $(sudo docker ps -a -q)

dockerのイメージをダウンロード


$ sudo docker pull ubuntu:13.04

Dockerfileを利用してイメージの作成


$ sudo docker build -t ubuntu_ssh:13.04 .

イメージをフォアグラウンドで実行する


$ sudo docker run -d -p 22 ubuntu_ssh:13.04 /usr/sbin/sshd -D

または
$ sudo docker run -d -p 22 ubuntu_ssh:13.04

コンテナのステータスを確認


$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
7c0eda536d0f        ubuntu:13.04        /usr/sbin/sshd -D   27 seconds ago      Up 26 seconds       0.0.0.0:49154->22/tcp   angry_hypatia 

実行中のコンテナの22番ポートが、ホストの49154にバインドされている

コンテナの ip と port を確認する


$ sudo docker port 7c0eda536d0f 22
0.0.0.0:49154

実行中のコンテナへsshで接続する


$ ssh test_user@0.0.0.0 -p 49154

コンテナの起動と停止


$ sudo docker stop  7c0eda536d0f 
$ sudo docker start 7c0eda536d0f 

間違って起動したコンテナにログインせずに停止できる
指定のコンテナを、前回の続きから起動できる

sample Dockerfile


# docker file
# comment
# rootやユーザーのパスワードは変更してください

# ubuntu-13.04
# VERSION               0.1.0

FROM ubuntu:13.04

# locale setting
RUN locale-gen en_US.UTF-8
RUN locale-gen ja_JP.UTF-8

# timezone setting
RUN echo "Asia/Tokyo" > /etc/timezone
RUN dpkg-reconfigure -f noninteractive tzdata

# make sure the package repository is up to date
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get dist-upgrade -y

# add bin
RUN apt-get install -y  vim-nox aptitude tmux wget curl

# change root password
# rootのパスワードは変更してください
RUN echo 'root:qwerty' |chpasswd

# add new user
# ユーザー名とパスワードは変更してください 
RUN useradd test_user -m -s /bin/bash
RUN echo 'test_user:12345' |chpasswd
RUN gpasswd -a test_user sudo

# openssh-server install
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN cp /etc/ssh/sshd_config /etc/ssh/sshd_config.origin
RUN sed -i -e "s/PermitRootLogin/#PermitRootLogin/g" /etc/ssh/sshd_config
EXPOSE 22
CMD    /usr/sbin/sshd -D


イメージのサイズ


$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu_ssh          13.04               2d0175cd5c4a        15 hours ago        572.7 MB
ubuntu              13.04               ab4344e23e3a        5 days ago          176.4 MB
ubuntu              12.04               c0fe63f9a4c1        5 days ago          231.1 MB

13.04をアップグレードして、opensshとちょっとしたバイナリを入れただけで600MB弱。

その他

VirtualBox上のUbuntuの仮想ディスクサイズが8Gの時、すぐディスクがいっぱいになったので、16Gのディスクに再インストールしてでストした。
VirtualBox上のUbuntuにDockerをインストールしてみたが、動作速度に不満は無い。

13.04から13.10へ、リリースアップグレードを試みたけど失敗。
何かいじればできるらしいけど、面倒なのでやめた。

-vオプションを使うと、ホストのディレクトリと、docker上のディレクトリをバインドできる
$ sudo docker run -i -v /host/path/to/dir:/dockr/path/to/dir -t ubuntu:13.04


0 コメント: