Weitere ähnliche Inhalte Ähnlich wie Dockerハンズオン (20) Dockerハンズオン1. Docker
ハンズオンCan you escape vendor lock-in with the cloud?
image by: https://blog.linode.com/2014/01/03/docker-on-linode/
written by @mainyaa
9. $ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9.2
BuildVersion: 13C1021
$ brew -v
Homebrew 0.9.5
$ vagrant -v
Vagrant 1.4.3
Version Check
10. $ cat << 'EOF' >> ~/.bashrc
export PS1="[e[1;32m][u@h:w]#[e
[00m] "
EOF
$ source ~/.bashrc
tips1:色を付けよう
11. $ cat << 'EOF' >> ~/.bashrc
$ alias dl=’docker ps -l -q’
EOF
$ source ~/.bashrc
aliasでcontainer idのコピペを無くす
tips2: aliasを設定
12. $ brew tap phinze/homebrew-cask
$ brew install brew-cask
$ brew cask install virtualbox
$ brew cask install vagrant
Install Vagrant
16. $ boot2docker init
$ boot2docker up
$ echo << 'EOF' >> ~/.bashrc
export DOCKER_HOST=tcp://localhost:4243
EOF
boot2docker起動
18. $ docker version
Client version: 0.11.0
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.0
Git commit (server): fb99f99
Go version (server): go1.2.1
Last stable version: 0.11.1, please update docker
version check
19. $ boot2docker stop
$ boot2docker delete
$ boot2docker download
$ boot2docker init
$ boot2docker up
もしboot2dockerが古いなら
21. $ docker run busybox echo 'docker on Mac o/'
Unable to find image 'busybox' (tag: latest) locally
Pulling repository busybox
3dd072f45bf6: Download complete
511136ea3c5a: Download complete
24abbd812704: Download complete
a943c4969b70: Download complete
docker on Mac o/
$ docker run busybox echo 'docker on Mac o/'
docker on Mac o/
busyboxでhelloworld
22. $ docker ps -a
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES
33273963cab6 busybox:latest echo docker on
Mac 3 days ago Exit 0
sick_bardeen
docker ps -a
24. $ docker images --tree
├─511136ea3c5a Virtual Size: 0 B
│ └─24abbd812704 Virtual Size: 0 B
│ └─a943c4969b70 Virtual Size: 2.489 MB
│ └─3dd072f45bf6 Virtual Size: 2.489 MB
Tags: busybox:latest
docker images --tree
26. docker run コンテナを作成する.
docker stop コンテナを停止する.
docker start コンテナを起動する.
docker restart コンテナを再起動する.
docker attach 起動中のコンテナに接続する.
docker rm コンテナを破棄する(コンテナを停止する必要がある)
docker wait コンテナが停止するまでブロックする.
コマンド一覧
29. $ yum install -y docker
$ sudo service docker start
$ groupadd docker
$ gpasswd -a #{USER} docker # sudo が要らなくなる魔法
$ sudo service docker restart
$ exit
$ exit # 一旦ログアウト
docker install
31. $ docker version
Client version: 0.9.0
Go version (client): go1.2
Git commit (client): 2b3fdf2/0.9.0
Server version: 0.9.0
Git commit (server): 2b3fdf2/0.9.0
Go version (server): go1.2
Last stable version: 0.11.1, please update docker
hello world!
33. $ docker run -t -i ubuntu /bin/bash
# uname -a
# exit
$ docker commit -m “hello ubuntu” `dl`
Hello Ubuntu!
35. -t -i は使わない
$ docker run -t -i の使い方は覚えましたか?
でも、この方法はデバッグ時以外は基本的に使
いません。
$ docker run -t -i + $ docker commitでやるスタイルも
ありますが、
Dockerfileを作るのがオススメ
37. $ mkdir docker-redis
$ cd docker-redis
$ vim Dockerfile
from ubuntu
run apt-get update
$ docker build .
Dockerfileを作成
41. from ubuntu:12.04
maintainer KazuyukiMori <mainya@gmail.com>
run locale-gen en_US.UTF-8
run update-locale LANG=en_US.UTF-8
env DEBIAN_FRONTEND noninteractive
env LC_ALL C
env LC_ALL en_US.UTF-8
run echo "deb http://us.archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
run apt-get update
run apt-get install -y redis-server
expose 6379
entrypoint ["/usr/bin/redis-server"]
redis-serverをインストール
43. run echo "deb http://us.archive.ubuntu.
com/ubuntu precise main universe" >
/etc/apt/sources.list
Dockerfileに必ずこの文章を書きましょう
キャッシュを使うと断然速い
Tips: キャッシュ
44. run locale-gen en_US.UTF-8
run update-locale LANG=en_US.UTF-8
env DEBIAN_FRONTEND noninteractive
env LC_ALL C
env LC_ALL en_US.UTF-8
英語の人はこの設定は要りません。
Dockerfileに必ずこの文章を書きましょう。シェルを前提にしているプログラ
ムが多いため、変なエラーを回避できます
Tips: locale + env
46. $ docker run -d -p 6379:6379 <yourname>/redis
デーモン実行
↑ポート設定
実行するコンテナID or タグ名
47. $ brew install redis
Warning: redis-2.8.4 already installed
$ redis-cli -h 108.59.85.37
108.59.85.37:6379> set docker awesome
OK
108.59.85.37:6379> get docker
"awesome"
Try it!
↑
48. $ docker ps
CONTAINER ID IMAGE
COMMAND CREATED STATUS
PORTS NAMES
b5a165a64956 mainyaa/redis:latest
/usr/bin/redis-serve 2 hours ago Up 2
hours 6379/tcp backstabbing_bell
try it! (AWS)
49. $ docker inspect b5a165a64956
"NetworkSettings": {
"IPAddress": "172.17.0.2",
$ redis-cli -h 172.17.0.2
try it! (AWS)
52. $ docker pull <yourname>/redis
$ docker run -d -p 6379:6379
<yourname>/redis
pullしてきたものはdocker buildしなくてよい。
そのままdocker runできる。
レポジトリからpull
58. $ docker ps -a | grep 'weeks ago' | awk '{print
$1}' | xargs docker rm
Dockerfileがあれば何時でもコンテナは作れるので、古い
ものはどんどん削除
tips: 古いコンテナ削除
62. Log
● ElesticSearch + kibanaでログの集約と可視化をしよう
● collectd + graphite でログの集約と可視化をしよう
● fluentd + Google BigQueryでログを解析しよう
65. Jenkins and more!
● Jenkinsでdockerイメージをビルドしてレポジトリにアップ
ロードしよう
● Sensuで監視をしよう
● busyboxで組み込み並みの超軽量サーバーをつくろう