preparation study of_docker - (mosg)

Post on 13-Apr-2017

409 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Preparation study of Docker

2016/03/24 Mulodo Vietnam Co., Ltd.

“Docker”

Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

What is “Docker”?

Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in.

( https://www.docker.com/what-docker )

Docker VS Vagrant ??Alternatively ?? NO!!

Docker : a kind of Linux container Vagrant: Virtual machine manager

Docker VS Vagrant ??Alternatively ?? NO!!

Docker : a kind of Linux container Vagrant: Virtual machine manager

DockerWork on Host OS directory OS of Docker and Host OS is Same

using host’s OS

Docker VS Vagrant ??Vagrant Emulated OS on Host

OS Independent from Host OS.

Virtual box

VMware...

Docker VS Vagrant ??Vagrant Emulated OS on Host

OS Independent from Host OS.

where is Vagrant?

Virtual box

VMware...

Docker VS Vagrant ??Vagrant Emulated OS on Host

OS Independent from Host OS.

where is Vagrant?VM managemanet tool

use various VM with same I/F.

Virtual box

VMware...I/F

Today’s goal

OSX

Mac Book Air

Linux on Linux on OSX

A typical use case on OSX

Today’s goal

Linux on Linux on OSX

OSX

Mac Book Air

VagrantVirtual Box

LinuxA typical use case on OSX

Today’s goal

Linux on Linux on OSX

OSX

Mac Book Air

VagrantVirtual Box

Linux

Dockerbin/libs

A typical use case on OSX

Today’s goal

Linux on Linux on OSX

A typical use case on OSX

OSX

Mac Book Air

VagrantVirtual Box

Linux

Dockerbin/libs

virtual machine (Linux)virtual machine

(linux)

Rough history of containerchroot:(1979, 1983->BSD)

Use user own env. change root directory. ex) /home/nemo => /

jail : (2000) Quarantine/restrictions of OS resources. (≒Namespace)

container : (2005, 2008->Linux) Namespace (mount:2002.... PID:2008) Cgroup (Quarantine/restrictions of HW resources)

LXC : (2014 (ver.1)) The one you love.

Docker : (2014 (ver.1)) The one you love.

Rough history of HypervisorVMware: (1999-)

The first product which used by *many* engineer.(?)

Xen : (2002) Use Linux kernel as Hypervisor

KVM : (2006) Linux kernel include Xen like Hypervisor

Virtual Box : (2007) proprietary software -> added OSS version.

BHyVe : (2011) KVM for BSD, simple, small, cool(?)

get tired a bit...

Create Vagrant machine

# coding: utf-8 # -*- mode: ruby -*- # vi: set ft=ruby :

Vagrant.configure(2) do |config|

config.vm.box = "ubuntu-14.04" config.vm.network "private_network", ip: "192.168.33.130"

end

$ vagrant box add utuntu-14.04 https://oss-binaries.phusionpassenger.com/vagrant/boxes/latest/ubuntu-14.04-amd64-vbox.box : $ vagrant box list ubuntu-14.04 (virtualbox, 0) $

Add Vagrant box (ubuntu-14.04)

Create Vagrantfile

Setup Docker machine

$ cat hosts [Docker-server] 192.168.33.130 (virtualbox, 0) $ cat setup.yml # setup docker server (base apps) - include: playbooks/server.yml # setup docker server - include: playbooks/docker.yml $ mkdir playbooks $

Create hosts, setup.yml, playbooks/

Setup Docker machine

$ cat playbooks/server.yml - hosts: Docker-server tasks: - name: "APT: update" become: yes apt: update_cache=yes

- name: "APT: clean" become: yes shell: > apt-get -y autoclean; apt-get -y clean

- name: "APT: install required apps" become: yes apt: pkg={{ item }} state=present update_cache=yes with_items: - git - unzip - emacs

Create playbooks/server.yml (basic apps)

Setup Docker machineCreate playbooks/docker.yml

Please check the official Docshttps://docs.docker.com/engine/installation/linux/ubuntulinux/

Setup Docker machine

- hosts: Docker-server

tasks: # setup to add Docker to APT - name: "check Docker list file" - name: "Put docker list file" - name: "check Docker bin" - name: "APT: update" - name: "install apt auth related packagesr" - name: "get APT key" - name: "APT: update" - name: "APT: purge lxc-docker" - name: "APT : cache"

# install Docker and start docker service - name: "APT: update" - name: "APT: add extra imager" - name: "APT: install Docker" - name: "service docker start"

Create playbooks/docker.yml

only steps.

add Ansible provision into Vagrantfile

# coding: utf-8 # -*- mode: ruby -*- # vi: set ft=ruby :

Vagrant.configure(2) do |config|

config.vm.box = "ubuntu-14.04" config.vm.network "private_network", ip: "192.168.33.130"

# Ansible config.vm.provision "ansible" do |ansible| ansible.playbook = "./setup.yml" ansible.inventory_path = "./hosts" ansible.limit = "Docker-server" end end

Setup Docker machine

- hosts: Docker-server

tasks: # setup to add Docker to APT - name: "check Docker list file" - name: "Put docker list file" - name: "check Docker bin" - name: "APT: update" - name: "install apt auth related packagesr" - name: "get APT key" - name: "APT: update" - name: "APT: purge lxc-docker" - name: "APT : caceh"

# install Docker and start docker service - name: "APT: update" - name: "APT: add extra imager" - name: "APT: install Docker" - name: "service docker start"

Create playbooks/docker.yml

only steps.

Please clone the repository

Setup Docker machine

$ git clone -b Docker git@github.com:nemo-soshi-mulodo/OpenDevStudyGroup.git

sample scripts.

Again..$ vagrant destroy $ vagrant up

$ vagrant ssh Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64)

* Documentation: https://help.ubuntu.com/ Last login: Thu Mar 24 05:30:32 2016 from 10.0.2.2 vagrant@ubuntu-14:~$ docker version Client: Version: 1.10.3 API version: 1.22 Go version: go1.5.3 Git commit: 20f81dd Built: Thu Mar 10 15:54:52 2016 OS/Arch: linux/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host? vagrant@ubuntu-14:~$ sudo service docker status docker start/running, process 8511 vagrant@ubuntu-14:~$

Create servervagrant@ubuntu-14:~$ docker pull php:7.0.2-apache 7.0.2-apache: Pulling from library/php 03e1855d4f31: Downloading 3.666 MB/51.36 MB a3ed95caeb02: Download complete 18f8f35c7f98: Downloading 3.311 MB/8.716 MB 252f4816c8e7: Downloading 3.222 MB/69.26 MB f8ac546f9ad6: Waiting 56eec5affd36: Waiting 8d6aa2f3838f: Waiting 082124b746bb: Waiting a237f42233ef: Waiting e532fb3215e9: Waiting c7e6a0f56f27: Waiting e1c620b7e144: Waiting 6953fe89923b: Waiting e5bfe4c72d64: Waiting

Create servervagrant@ubuntu-14:~$ docker pull php:7.0.2-apache 7.0.2-apache: Pulling from library/php 03e1855d4f31: Downloading 3.666 MB/51.36 MB a3ed95caeb02: Download complete 18f8f35c7f98: Downloading 3.311 MB/8.716 MB 252f4816c8e7: Downloading 3.222 MB/69.26 MB f8ac546f9ad6: Waiting 56eec5affd36: Waiting 8d6aa2f3838f: Waiting 082124b746bb: Waiting a237f42233ef: Waiting e532fb3215e9: Waiting c7e6a0f56f27: Waiting e1c620b7e144: Waiting 6953fe89923b: Waiting e5bfe4c72d64: Waiting

Create servervagrant@ubuntu-14:~$ docker pull php:7.0.2-apache 7.0.2-apache: Pulling from library/php 03e1855d4f31: Download complete a3ed95caeb02: Download complete 18f8f35c7f98: Download complete 252f4816c8e7: Download complete f8ac546f9ad6: Download complete 56eec5affd36: Download complete 8d6aa2f3838f: Download complete 082124b746bb: Download complete a237f42233ef: Download complete e532fb3215e9: Download complete c7e6a0f56f27: Download complete e1c620b7e144: Download complete 6953fe89923b: Download complete e5bfe4c72d64: Download complete Digest: sha256:b1e1421a1ca86660552025c00ed42906c6619daa1bcb9c477236b80fadc8f27b Status: Downloaded newer image for php:7.0.2-apache vagrant@ubuntu-14:~$

check servervagrant@vagrant:~$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE php 7.0.2-apache 90e2c0e2fc5c 8 weeks ago 521 MB

vagrant@vagrant:~$ docker run -d php:7.0.2-apache 1d5fc77e68dde86cbaea5716beef723c102b41e9b0240d44739b08ed83b09d1f vagrant@vagrant:~$

vagrant@vagrant:~$ docker ps CONTAINER ID IMAGE COMMAND .. 1d5fc77e68dd php:7.0.2-apache “apache2-foreground" .. vagrant@vagrant:~$

vagrant@ubuntu-14:~$ docker stop 1d5fc77e68dd 1d5fc77e68dd vagrant@ubuntu-14:~$ docker ps CONTAINER ID IMAGE COMMAND ... vagrant@vagrant:~$

check server (2)vagrant@ubuntu-14:~$ docker run -it php:7.0.2-apache /bin/bash root@3399320f814e:/var/www/html# ps ax PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /bin/bash 7 ? R+ 0:00 ps ax root@3399320f814e:/var/www/html# /etc/init.d/apache2 start [....] Starting web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message . ok root@3399320f814e:/var/www/html# ps -ax | grep apache 24 ? Ss 0:00 /usr/sbin/apache2 -k start 27 ? S 0:00 /usr/sbin/apache2 -k start 28 ? S 0:00 /usr/sbin/apache2 -k start 29 ? S 0:00 /usr/sbin/apache2 -k start 30 ? S 0:00 /usr/sbin/apache2 -k start 31 ? S 0:00 /usr/sbin/apache2 -k start 55 ? S+ 0:00 grep apache root@3399320f814e:/var/www/html# exit exit vagrant@ubuntu-14:~$ docker ps CONTAINER ID IMAGE .... vagrant@ubuntu-14:~$

Finished..

I'm looking forward to the event.

Finished..

I'm looking forward to the event.

Meow (Thank you)

top related