環境
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 コメント:
コメントを投稿