2014/12/06 Vol.1 
Docker䛳䛶ఱ䛷䛩䛛䠛 
Infrastructure.nagoya
自己紹介 
● 䛿䜎䛨 䠄@HmjKRS䠅 
○ ᮶ᰨᕝ㟁⟬ ♫ෆ䝙䞊䝖 
○ ඖ䜲䞁䝣䝷ᢸᙜ → ㄆ㆑⣔䜶䞁䝆䝙䜰ぢ⩦䛔 
○ Chef, Vagrant, docker 䜢ᗈ䜑䜘䛖䛸䛧䛯ே 
○ ኚ䛺䛣䛸䛜ዲ䛝
自己紹介 
● 䛿䜎䛨 䠄@HmjKRS䠅 
○ ᮶ᰨᕝ㟁⟬ ♫ෆ䝙䞊䝖 
○ ඖ䜲䞁䝣䝷ᢸᙜ → ㄆ㆑⣔䜶䞁䝆䝙䜰ぢ⩦䛔 
○ Chef, Vagrant, docker 䜢ᗈ䜑䜘䛖䛸䛧䛯ே 
○ ኚ䛺䛣䛸䛜ዲ䛝 
Jenkins ⏝䛾 docker 䝥䝷䜾䜲䞁䜢᭩䛔䛶䚸 
docker 䜢䛴䛛䛳䛯 CI ⎔ቃ䜢ᵓ⠏䞉㐠⏝䛧䛶䜎䛧䛯䚹
今日の目的 
docker 䛣䜟䛟䛺䛔䚹 
䜒䛳䛸㌟㏆䛻ឤ䛨䛶䜋䛧䛔䚹
今日やること 
● CentOS 䛷 docker 䜢ゐ䛳䛶䜏䜛 
● docker 䛷䝔䝖䝸䝇䛩䜛 
● docker 䛷౑䛔ᤞ䛶䝣䜯䜲䝹䝃䞊䝞䞊䜢❧䛶䜛 
● fig 䛷䝁䞁䝔䝘䜢⟶⌮䛩䜛
docker 䛸䛿
ソフトウェアとしての docker 
● 䝁䞁䝔䝘ᆺ௬᝿໬ 
䝝䜲䝟䞊䝞䜲䝄ᆺ䛸ẚ㍑䛧䛶㍍㔞䞉㧗㏿ 
● Infrastructure as Code 䛾䝃䝫䞊䝖 
Dockerfile 䛛䜙䜲䝯䞊䝆䜢෌⌧䛷䛝䜛 
● 䜲䝯䞊䝆䛾ᕪศ⟶⌮ 
git 䛾䜘䛖䛻䜲䝯䞊䝆䜢⟶⌮ 
䜲䝯䞊䝆䛿䝸䝫䝆䝖䝸䛻 commit 䛧䛶ඹ᭷䛷䛝䜛
docker の目指す世界 
䜰䝥䝸䜿䞊䝅䝵䞁䛾ḟୡ௦䝥䝷䝑䝖䝣䜷䞊䝮 
● docker 䛥䛘ື䛡䜀䛒䜙䜖䜛䜰䝥䝸䜿䞊䝅䝵䞁䛜ື䛟 
䛩䜉䛶䛾䜰䝥䝸䜿䞊䝅䝵䞁䛿䝁䞁䝔䝘ୖ䛷ື䛟 
䝩䝇䝖䝬䝅䞁䛾⎔ቃ䛻䛿౫Ꮡ䛧䛺䛔 
● 䜰䝥䝸䜿䞊䝅䝵䞁䜢㓄ᕸ䛩䜛᫬௦䛾⤊ᖥ 
docker 䜲䝯䞊䝆䜢㓄ᕸ䛩䜛᫬௦䜈
docker 䜲䞁䝇䝖䞊䝹
CentOS 6 系 
■ kernel 3.8 ௨㝆䛻᭦᪂ 
# yum -y install bc 
# curl -L -O https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.bz2 
# tar xfj linux-3.10.tar.bz2 
# cd linux-3.10 
# cp /boot/config-$(uname -r) .config && yes "" | make oldconfig 
# make && make modules_install && make install 
# sed -ie 's/^default=1/default=0/' /etc/grub.conf 
■ docker 䜲䞁䝇䝖䞊䝹 
# sed -ie 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
# yum -y install  
http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
# yum -y install docker-io lxc 
# sed -ie 's/^other_args=/other_args="--exec-driver lxc --selinux-enabled"/'  
/etc/sysconfig/docker 
# usermod -G docker vagrant 
# service docker start 
# chkconfig docker on 
docker 1.3 䛛䜙ྂ䛔 kernel 䛷䛿 
㉳ື䛷䛝䛺䛟䛺䛳䛯䚹
CentOS 7 系 
■ docker 䜲䞁䝇䝖䞊䝹 
# yum install docker 
# usermod -G docker vagrant 
# systemctl start docker.service 
# systemctl enable docker.service 
௨๓䛿 /usr/lib/systemd/system/docker.service 䛻 
䝞䜾䛜䛒䛳䛯䛜䚸⌧ᅾ䛿ゎᾘ䛥䜜䛶䛔䜛
インストールしたらやること 
docker 䜢䜲䞁䝇䝖䞊䝹䛧䛯䜙 
䜎䛪᭱ึ䛻↓䛾䝁䝬䞁䝗䜢ᐇ⾜䛩䜛䛸ᖾ䛫䛻䛺䜜䜎䛩䚹 
$ docker run -it --rm supertest2014/nyan
(*´Д`)
ᮏ㢟
docker 䜢䛴䛛䛳䛶 
䛣䛳䛭䜚䝔䝖䝸䝇䛩䜛 
ୖྖ䛻䝞䝺䛺䛔䜘䛖䛻⑞㊧䜢ṧ䛥䛪䛻㐟䜌䛖
テトリスができるイメージをつくろう 
● ౑⏝䛩䜛 Dockerfile 
$ cd /vagrant 
$ cat ./bastet/Dockerfile 
FROM ubuntu:14.10 
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 bastet 
ENTRYPOINT /usr/games/bastet 
● 䜲䝯䞊䝆䛾䝡䝹䝗 
$ docker build -t hamaji/bastet ./bastet
コンテナを起動してみよう 
● ↓ 䛾䝁䝬䞁䝗䜢ᐇ⾜ 
$ docker run -it --rm hamaji/bastet 
● 䝔䝖䝸䝇䛷䛝䜛䜘 
䜹䞊䝋䝹䜻䞊䠖⛣ື 
䝇䝨䞊䝇䜻䞊䠖ᅇ㌿
インベーダーも 
“bastet” 䛾㒊ศ䜢 “ninvaders” 䛻ኚ䛘䜛䛸 
䜲䞁䝧䞊䝎䞊䜒䛣䛳䛭䜚㐟䜉䜛
docker 䜢䛴䛛䛳䛶 
䝣䜯䜲䝹䝃䞊䝞䞊䜢❧䛶䜛 
䝁䝬䞁䝗䜂䛸䛴䛷䜹䝺䞁䝖䝕䜱䝺䜽䝖䝸䜢 
Samba 䛷බ㛤䛷䛝䛯䜙౽฼䛰䜘䛽
Samba を立てるイメージをつくろう 
● ౑⏝䛩䜛 Dockerfile 
$ cat ./samba/Dockerfile 
FROM centos:centos6 
RUN yum -y install samba 
RUN mkdir -p /var/samba 
ADD smb.conf /etc/samba/smb.conf 
EXPOSE 139 445 
ENTRYPOINT smbd --daemon --foreground --log-stdout 
● 䜲䝯䞊䝆䛾䝡䝹䝗 
$ docker build -t hamaji/samba ./samba
コンテナを起動してみよう 
● බ㛤䛧䛯䛔䝕䜱䝺䜽䝖䝸䛻⛣ື䛧䛶 ↓ 䛾䝁䝬䞁䝗䜢ᐇ⾜ 
$ docker run -p 139:139 -p 445:445  
-v $(pwd):/var/samba -d --name samba  
hamaji/samba 
● Web 䝤䝷䜴䝄䛷 ↓ 䛻䜰䜽䝉䝇 
smb://<䝩䝇䝖䝬䝅䞁䛾IP䜰䝗䝺䝇>/public 
● ‶㊊䛧䛯䜙 ↓ 䛾䝁䝬䞁䝗䛷⤊஢ 
$ docker kill samba
Web サーバーも簡単に 
ྠ䛨䜘䛖䛺᪉ἲ䛷䜹䝺䞁䝖䝕䜱䝺䜽䝖䝸䜢 
䝁䝬䞁䝗䜂䛸䛴䛷 http 䛷බ㛤䛩䜛䛣䛸䜒䛷䛝䜛
fig 䜢䛴䛛䛳䛶 
䝁䞁䝔䝘䜢⟶⌮䛧䜘䛖 
docker run 䝁䝬䞁䝗䛳䛶↓㥏䛻㛗䛔䛧䚸 
䝫䞊䝖䜔䝬䜴䞁䝖ඖ䛿ᅛᐃ໬䛧䛯䛔䜘䛽
fig の何がうれしいか 
● ⣲䛾 docker 䝁䝬䞁䝗䛿㛗䛔䛧䚸㛫㐪䛘䜔䛩䛔 
$ docker run -p 139:139 -p 445:445 -v $(pwd):/var/samba -d --name samba hamaji/samba 
䛹䛾䝁䞁䝔䝘䛻䛹䛾䝫䞊䝖䜢䝞䜲䞁䝗䛩䜛䛛䚸 
䛹䛾䝕䜱䝺䜽䝖䝸䜢䝬䜴䞁䝖䛩䜛䛛䛿ᡭ㡰᭩䛷⟶⌮䛩䜛䛧䛛䛺䛔䚹 
● fig 䛺䜙䝁䞁䝔䝘䛾タᐃ䜢䝣䜯䜲䝹䛻᭩䛔䛶䛚䛡䜛 
$ fig up 
fig.yml 䛻䝫䞊䝖䜔䝬䜴䞁䝖䛩䜛䝕䜱䝺䜽䝖䝸䜢᭩䛔䛶䛚䛡䜛䚹 
fig.yml 䛜䛒䜜䜀䚸䛒䛸䛿䝁䝬䞁䝗䛯䛯䛟䛰䛡䚹
fig のインストール 
■ CentOS 6 ⣔ 
# yum -y install  
http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
# yum -y install python-pip 
# pip install -U fig 
■ CentOS 7 ⣔ 
# yum install epel-release 
# yum -y install python-pip 
# pip install -U fig
fig.yml を書こう 
● Samba 䝁䞁䝔䝘䛾 fig.yml 
$ cat ./samba/fig.yml 
samba: 
build: ./ 
ports: 
- 139:139 
- 445:445 
volumes: 
- /vagrant:/var/samba
fig でコンテナを制御しよう 
● 䝁䞁䝔䝘䛾⏕ᡂ䛸㉳ື 
$ fig up -d 
● 䛒䛸䛿 --help 䛷 
$ fig --help
䛚䜟䜚

Infrastructure.nagoya ~Dockerって何ですか?~

  • 1.
  • 2.
    自己紹介 ● 䛿䜎䛨䠄@HmjKRS䠅 ○ ᮶ᰨᕝ㟁⟬ ♫ෆ䝙䞊䝖 ○ ඖ䜲䞁䝣䝷ᢸᙜ → ㄆ㆑⣔䜶䞁䝆䝙䜰ぢ⩦䛔 ○ Chef, Vagrant, docker 䜢ᗈ䜑䜘䛖䛸䛧䛯ே ○ ኚ䛺䛣䛸䛜ዲ䛝
  • 3.
    自己紹介 ● 䛿䜎䛨䠄@HmjKRS䠅 ○ ᮶ᰨᕝ㟁⟬ ♫ෆ䝙䞊䝖 ○ ඖ䜲䞁䝣䝷ᢸᙜ → ㄆ㆑⣔䜶䞁䝆䝙䜰ぢ⩦䛔 ○ Chef, Vagrant, docker 䜢ᗈ䜑䜘䛖䛸䛧䛯ே ○ ኚ䛺䛣䛸䛜ዲ䛝 Jenkins ⏝䛾 docker 䝥䝷䜾䜲䞁䜢᭩䛔䛶䚸 docker 䜢䛴䛛䛳䛯 CI ⎔ቃ䜢ᵓ⠏䞉㐠⏝䛧䛶䜎䛧䛯䚹
  • 4.
    今日の目的 docker 䛣䜟䛟䛺䛔䚹 䜒䛳䛸㌟㏆䛻ឤ䛨䛶䜋䛧䛔䚹
  • 5.
    今日やること ● CentOS䛷 docker 䜢ゐ䛳䛶䜏䜛 ● docker 䛷䝔䝖䝸䝇䛩䜛 ● docker 䛷౑䛔ᤞ䛶䝣䜯䜲䝹䝃䞊䝞䞊䜢❧䛶䜛 ● fig 䛷䝁䞁䝔䝘䜢⟶⌮䛩䜛
  • 6.
  • 7.
    ソフトウェアとしての docker ●䝁䞁䝔䝘ᆺ௬᝿໬ 䝝䜲䝟䞊䝞䜲䝄ᆺ䛸ẚ㍑䛧䛶㍍㔞䞉㧗㏿ ● Infrastructure as Code 䛾䝃䝫䞊䝖 Dockerfile 䛛䜙䜲䝯䞊䝆䜢෌⌧䛷䛝䜛 ● 䜲䝯䞊䝆䛾ᕪศ⟶⌮ git 䛾䜘䛖䛻䜲䝯䞊䝆䜢⟶⌮ 䜲䝯䞊䝆䛿䝸䝫䝆䝖䝸䛻 commit 䛧䛶ඹ᭷䛷䛝䜛
  • 8.
    docker の目指す世界 䜰䝥䝸䜿䞊䝅䝵䞁䛾ḟୡ௦䝥䝷䝑䝖䝣䜷䞊䝮 ● docker 䛥䛘ື䛡䜀䛒䜙䜖䜛䜰䝥䝸䜿䞊䝅䝵䞁䛜ື䛟 䛩䜉䛶䛾䜰䝥䝸䜿䞊䝅䝵䞁䛿䝁䞁䝔䝘ୖ䛷ື䛟 䝩䝇䝖䝬䝅䞁䛾⎔ቃ䛻䛿౫Ꮡ䛧䛺䛔 ● 䜰䝥䝸䜿䞊䝅䝵䞁䜢㓄ᕸ䛩䜛᫬௦䛾⤊ᖥ docker 䜲䝯䞊䝆䜢㓄ᕸ䛩䜛᫬௦䜈
  • 9.
  • 10.
    CentOS 6 系 ■ kernel 3.8 ௨㝆䛻᭦᪂ # yum -y install bc # curl -L -O https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.tar.bz2 # tar xfj linux-3.10.tar.bz2 # cd linux-3.10 # cp /boot/config-$(uname -r) .config && yes "" | make oldconfig # make && make modules_install && make install # sed -ie 's/^default=1/default=0/' /etc/grub.conf ■ docker 䜲䞁䝇䝖䞊䝹 # sed -ie 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum -y install docker-io lxc # sed -ie 's/^other_args=/other_args="--exec-driver lxc --selinux-enabled"/' /etc/sysconfig/docker # usermod -G docker vagrant # service docker start # chkconfig docker on docker 1.3 䛛䜙ྂ䛔 kernel 䛷䛿 ㉳ື䛷䛝䛺䛟䛺䛳䛯䚹
  • 11.
    CentOS 7 系 ■ docker 䜲䞁䝇䝖䞊䝹 # yum install docker # usermod -G docker vagrant # systemctl start docker.service # systemctl enable docker.service ௨๓䛿 /usr/lib/systemd/system/docker.service 䛻 䝞䜾䛜䛒䛳䛯䛜䚸⌧ᅾ䛿ゎᾘ䛥䜜䛶䛔䜛
  • 12.
    インストールしたらやること docker 䜢䜲䞁䝇䝖䞊䝹䛧䛯䜙 䜎䛪᭱ึ䛻↓䛾䝁䝬䞁䝗䜢ᐇ⾜䛩䜛䛸ᖾ䛫䛻䛺䜜䜎䛩䚹 $ docker run -it --rm supertest2014/nyan
  • 13.
  • 14.
  • 15.
    docker 䜢䛴䛛䛳䛶 䛣䛳䛭䜚䝔䝖䝸䝇䛩䜛 ୖྖ䛻䝞䝺䛺䛔䜘䛖䛻⑞㊧䜢ṧ䛥䛪䛻㐟䜌䛖
  • 16.
    テトリスができるイメージをつくろう ● ౑⏝䛩䜛Dockerfile $ cd /vagrant $ cat ./bastet/Dockerfile FROM ubuntu:14.10 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 bastet ENTRYPOINT /usr/games/bastet ● 䜲䝯䞊䝆䛾䝡䝹䝗 $ docker build -t hamaji/bastet ./bastet
  • 17.
    コンテナを起動してみよう ● ↓䛾䝁䝬䞁䝗䜢ᐇ⾜ $ docker run -it --rm hamaji/bastet ● 䝔䝖䝸䝇䛷䛝䜛䜘 䜹䞊䝋䝹䜻䞊䠖⛣ື 䝇䝨䞊䝇䜻䞊䠖ᅇ㌿
  • 18.
    インベーダーも “bastet” 䛾㒊ศ䜢“ninvaders” 䛻ኚ䛘䜛䛸 䜲䞁䝧䞊䝎䞊䜒䛣䛳䛭䜚㐟䜉䜛
  • 19.
    docker 䜢䛴䛛䛳䛶 䝣䜯䜲䝹䝃䞊䝞䞊䜢❧䛶䜛 䝁䝬䞁䝗䜂䛸䛴䛷䜹䝺䞁䝖䝕䜱䝺䜽䝖䝸䜢 Samba 䛷බ㛤䛷䛝䛯䜙౽฼䛰䜘䛽
  • 20.
    Samba を立てるイメージをつくろう ●౑⏝䛩䜛 Dockerfile $ cat ./samba/Dockerfile FROM centos:centos6 RUN yum -y install samba RUN mkdir -p /var/samba ADD smb.conf /etc/samba/smb.conf EXPOSE 139 445 ENTRYPOINT smbd --daemon --foreground --log-stdout ● 䜲䝯䞊䝆䛾䝡䝹䝗 $ docker build -t hamaji/samba ./samba
  • 21.
    コンテナを起動してみよう ● බ㛤䛧䛯䛔䝕䜱䝺䜽䝖䝸䛻⛣ື䛧䛶↓ 䛾䝁䝬䞁䝗䜢ᐇ⾜ $ docker run -p 139:139 -p 445:445 -v $(pwd):/var/samba -d --name samba hamaji/samba ● Web 䝤䝷䜴䝄䛷 ↓ 䛻䜰䜽䝉䝇 smb://<䝩䝇䝖䝬䝅䞁䛾IP䜰䝗䝺䝇>/public ● ‶㊊䛧䛯䜙 ↓ 䛾䝁䝬䞁䝗䛷⤊஢ $ docker kill samba
  • 22.
    Web サーバーも簡単に ྠ䛨䜘䛖䛺᪉ἲ䛷䜹䝺䞁䝖䝕䜱䝺䜽䝖䝸䜢 䝁䝬䞁䝗䜂䛸䛴䛷 http 䛷බ㛤䛩䜛䛣䛸䜒䛷䛝䜛
  • 23.
    fig 䜢䛴䛛䛳䛶 䝁䞁䝔䝘䜢⟶⌮䛧䜘䛖 docker run 䝁䝬䞁䝗䛳䛶↓㥏䛻㛗䛔䛧䚸 䝫䞊䝖䜔䝬䜴䞁䝖ඖ䛿ᅛᐃ໬䛧䛯䛔䜘䛽
  • 24.
    fig の何がうれしいか ●⣲䛾 docker 䝁䝬䞁䝗䛿㛗䛔䛧䚸㛫㐪䛘䜔䛩䛔 $ docker run -p 139:139 -p 445:445 -v $(pwd):/var/samba -d --name samba hamaji/samba 䛹䛾䝁䞁䝔䝘䛻䛹䛾䝫䞊䝖䜢䝞䜲䞁䝗䛩䜛䛛䚸 䛹䛾䝕䜱䝺䜽䝖䝸䜢䝬䜴䞁䝖䛩䜛䛛䛿ᡭ㡰᭩䛷⟶⌮䛩䜛䛧䛛䛺䛔䚹 ● fig 䛺䜙䝁䞁䝔䝘䛾タᐃ䜢䝣䜯䜲䝹䛻᭩䛔䛶䛚䛡䜛 $ fig up fig.yml 䛻䝫䞊䝖䜔䝬䜴䞁䝖䛩䜛䝕䜱䝺䜽䝖䝸䜢᭩䛔䛶䛚䛡䜛䚹 fig.yml 䛜䛒䜜䜀䚸䛒䛸䛿䝁䝬䞁䝗䛯䛯䛟䛰䛡䚹
  • 25.
    fig のインストール ■CentOS 6 ⣔ # yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # yum -y install python-pip # pip install -U fig ■ CentOS 7 ⣔ # yum install epel-release # yum -y install python-pip # pip install -U fig
  • 26.
    fig.yml を書こう ●Samba 䝁䞁䝔䝘䛾 fig.yml $ cat ./samba/fig.yml samba: build: ./ ports: - 139:139 - 445:445 volumes: - /vagrant:/var/samba
  • 27.
    fig でコンテナを制御しよう ●䝁䞁䝔䝘䛾⏕ᡂ䛸㉳ື $ fig up -d ● 䛒䛸䛿 --help 䛷 $ fig --help
  • 28.