Text
Page: 1
Dockerイメージを作る
とみたまさひろ
NSEG#54
2014/08/31
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 2
自己紹介
とみた まさひろ
プログラマー (Ruby & C)
http://tmtms.hatenablog.com
http://twitter.com/tmtms
https://github.com/tmtm
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 3
自分用のまとめみたいな感じで目
新しい話はありません
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 4
イメージ
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 5
コンテナの元になるもの
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 6
一覧を見る
# docker images
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 7
公式レジストリから持ってくる
# docker pull ubuntu
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 8
コンテナから作る
# docker run ubuntu ...
...コンテナ内のファイルを変更...
# docker ps -a
CONTAINER ID
17012e82eff3
IMAGE
ubuntu:14.04
COMMAND
...
/bin/bash ...
# docker commit 17012e82eff3 hoge
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 9
イメージから作る
# ls
Dockerfile
# cat Dockerfile
FROM ubuntu
RUN apt-get update
RUN apt-get install ruby
# docker build -t hoge .
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 10
ベースイメージを作る
tar を元に作る
# cat /tmp/hoge.tar | docker import - hoge
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 11
Ubuntuのベースイメージ
# debootstrap trusty ./hoge
http://ftp.riken.go.jp/Linux/ubuntu/
# cd hoge
# tar -c . | docker import - hoge
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 12
作ったイメージを管理
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 13
公開する
Docker Hub Registry
https://registry.hub.docker.com/
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 14
諸事情によりプライベートで管理
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 15
レジストリサーバを立てる
https://github.com/docker/docker-registry
# docker pull registry:latest
# docker run -d -e STORAGE_PATH=/registry
-v /dokka:/registry -p 5000:5000 registry
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 16
プライベートレジストリに登録
# docker tag hoge 192.168.1.1:5000/hoge:1.0
# docker push 192.168.1.1:5000/hoge:1.0
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 17
プライベートレジストリから取出
# docker pull 192.168.1.1:5000/hoge
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 18
レジストリ内のイメージ一覧
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 19
準備
レジストリサーバー起動時に SEARCH_BACKEND
を指定
# docker run -d -e STORAGE_PATH=/registry
-e SEARCH_BACKEND=sqlalchemy
-v /dokka:/registry -p 5000:5000 registry
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 20
取り出し
結果はJSON
% GET http://192.168.1.1:5000/v1/search
{"num_results": 1, "query": "", "results":
[{"description": null, "name": "library/hoge"}]}
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 21
おまけ
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 22
コンテナ環境に入るには?
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 23
ssh は sshd が動いてないといけな
いしカーネル同じなのに無駄っぽい
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 24
nsinit が便利
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 25
nsinit
Ubuntu の場合
# go get github.com/docker/libcontainer/nsinit
# cd /var/lib/docker/execdriver/native/コンテナID
# nsinit exec bash
Dockerイメージを作る
Powered by Rabbit 2.1.3
Page: 26
おわり
Dockerイメージを作る
Powered by Rabbit 2.1.3