Slide 1

Slide 1 text

Docker hands-on in Toreta Yuichiro MASUI 
 masuidrive@toreta.in

Slide 2

Slide 2 text

Dockerͱ͸ • Ծ૝Խٕज़ͷ૊Έ߹Θͤ • ܰྔ • Πϝʔδ഑෍ͷ࢓૊Έ͕੔͍ͬͯΔ • ࢖͍ࣺͯͷΠϯελϯεͱͷ૬ੑ͕ྑ͍

Slide 3

Slide 3 text

ϑΝΠϧͱϓϩηε Host OS ϓϩηε ϓϩηε ϓϩηε FS ϓϩηε FS ϑΝΠϧγεςϜ Docker daemon Container Container Network Network

Slide 4

Slide 4 text

Docker Container • ϓϩηεͷִ཭ • Dockerϓϩηε͔Βଞͷϓϩηε͸ݟ͑ͳ͍ • ϑΝΠϧγεςϜͷִ཭ • ϓϩηεຖʹݟ͑ΔϑΝΠϧ͸ҧ͏

Slide 5

Slide 5 text

ϑΝΠϧͱϓϩηε

Slide 6

Slide 6 text

Docker Machine Host OS ϓϩηε ϓϩηε ϑΝΠϧγεςϜ Docker daemon VirtualBox OSX / Windows Docker Machine ϓϩηε FS ϓϩηε FS Network Network

Slide 7

Slide 7 text

DockerͰγΣϧىಈ • “Docker Quickstart Terminal”Λ3ຕىಈ • docker run -it ubuntu:14.04 /bin/bash • ps aux • touch /abc123 • docker run -it ubuntu:14.04 /bin/bash • ls / • docker ps

Slide 8

Slide 8 text

ͳʹ͕ى͍ͬͯ͜Δ͔ • docker run -it ubuntu:14.04 /bin/bash • “ubuntu:14.04” ࣮ߦ͢ΔϑΝΠϧΠϝʔδ • ϩʔΧϧʹͳ͍৔߹͸μ΢ϯϩʔυ • ΠϝʔδΛల։͠DockerͰىಈ • “-it” ίϯιʔϧΛܨ͛Δ

Slide 9

Slide 9 text

ͳʹ͕ى͍ͬͯ͜Δ͔ • ىಈ͢ΔͨΊʹ৽͍͠ϑΝΠϧγεςϜΛ࡞Δ • docker ps -a • docker rm CONTAINER_ID

Slide 10

Slide 10 text

Πϝʔδ • ΠϝʔδϑΝΠϧ͸Docker HubͰ഑෍ • ഑෍͢Δ࢓૊ΈΛDocker RegistryͱݺͿ • ֤छΠϝʔδ͕ެࣜʹ഑෍͞Ε͍ͯΔ • https://hub.docker.com/_/ubuntu/

Slide 11

Slide 11 text

Πϝʔδ • OSҎ֎ʹΞϓϦͷΠϝʔδ΋ఏڙ͞Ε͍ͯΔ • docker run -it --rm ruby:2.3.0 /bin/bash • ruby -v • “--rm" ίϯςφΛऴྃ࣌ʹϑΝΠϧΛফ͢

Slide 12

Slide 12 text

ࣗ෼ͷΠϝʔδΛ࡞Δ • ΠϝʔδʹมߋΛՃ͑Δ • Dockerfile FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y apache2 CMD ["/usr/sbin/apache2ctl","-D","FOREGROUND"]

Slide 13

Slide 13 text

DockfileΛىಈ • docker build -t myapache ./ • “-t myapache” Πϝʔδ໊ • “./“ DockerfileͷσΟϨΫτϦ • docker run -p 8080:80 myapache • http://192.168.99.100:8080 • docker-machine ip

Slide 14

Slide 14 text

docker-machine • docker-machine restart • $(docker-machine env)

Slide 15

Slide 15 text

ڧ੍ఀࢭ • docker ps • docker stop CONTAINER_ID

Slide 16

Slide 16 text

ϗετͷϑΝΠϧΛϚ΢ϯτ • docker run -v `pwd`:/var/www/html -p 8080:80 myapache

Slide 17

Slide 17 text

Containerؒ௨৴ • Container͸ಠཱ͍ͯ͠ΔͷͰlocalhostͰ͸ΞΫ ηεͰ͖ͳ͍ • ͦͷลΛ؆୯ʹ͢Δͷ͕Docker Compose

Slide 18

Slide 18 text

docker-compose.yml rails:
 build: .
 command: [“./bin/rails","server","-b","0.0.0.0"]
 mem_limit: 512m
 ports:
 - "3000:3000"
 volumes:
 - ".:/usr/src/app"
 links:
 - "mysql" mysql:
 image: mysql:5.6
 environment:
 MYSQL_ROOT_PASSWORD: "passwd"

Slide 19

Slide 19 text

ΊΜͲ͍ͷͰϫϯϥΠφʔ • DockerͰRails։ൃ؀ڥΛ࡞ΔϫϯϥΠφʔ • http://qiita.com/masuidrive/items/7478fb9101652f2bbae1

Slide 20

Slide 20 text

docker-compose ࣮ߦ • docker-compose build • docker-compose up • docker-compose rm

Slide 21

Slide 21 text

database.yml • default: &default
 adapter: mysql2
 username: root
 password: "passwd"
 host: mysql • production:
 <<: *default
 host: <%= ENV[‘MYSQL_HOST'] %>
 ↑͜ͷߦΛ௥Ճ

Slide 22

Slide 22 text

scaffold • docker-compose up -d • docker-compose run rails /bin/bash • rails g scaffold item key:string value:text • rake db:create db:migrate • http://192.168.99.100:3000/items • docker-compose stop

Slide 23

Slide 23 text

Amazon ECS & ECR • Amazon EC2 Container System • Dockerͱecs-agentೖΓઐ༻ͷAMI • DockerΛૢ࡞͢Δίϯιʔϧ & API • Amazon EC2 Container Registry • Docker Registry

Slide 24

Slide 24 text

ECRʹRepositoryΛ࡞੒ • ը໘ӈ্ͷRegion͸N.Virginia • Sample appͷνΣοΫΛ֎ͯ͠ • “sample1”ͷϦϙδτϦΛ࡞Δ

Slide 25

Slide 25 text

ECRʹimageΛpush • $(aws ecr get-login --region us-east-1) • docker build -t sample1 . • docker tag sample1:latest 123456.dkr.ecr.us- east-1.amazonaws.com/sample1:latest • docker push 123456.dkr.ecr.us- east-1.amazonaws.com/sample1:latest

Slide 26

Slide 26 text

RDS࡞Ζ͏ • ύεϫʔυ͸޷͖ͳϞϊΛ • Publicly access͸”NO”Ͱ

Slide 27

Slide 27 text

ECS Cluster

Slide 28

Slide 28 text

ECS instance • cluster࡞ͬͯ • ecs AMIͰΠϯελϯε࡞ΔɻIAM role๨Εͣʹ • http://docs.aws.amazon.com/AmazonECS/latest/ developerguide/instance_IAM_role.html

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Task defnition • docker-composeʹ૬౰ • ίϯςφͷͨΊͷ؀ڥΛઃఆ

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

ಉ͡Α͏ʹmigrate Task΋ • appͱ΄΅ಉ͡ • Port͸ઃఆ͠ͳ͍ • Command͸ɺ./bin/rake,db:migrate

Slide 39

Slide 39 text

Service

Slide 40

Slide 40 text

Service ͱ Task • Service͕TaskΛ্ཱͪ͛Δ • Task͸1ͭҎ্ͷContainerΛ༗͢Δ • Task͕མͪΔͱService͕ࣗಈతʹTaskΛىಈ • Service͔Βىಈ͞Εͳ͍λεΫ͸୯ൃىಈ • rake db:migrateͱ͔

Slide 41

Slide 41 text

production.logΛݟΔ • sshͯ͠ • docker ps • docker exec -it CONTAINER_ID /bin/bash