Docker超入門

Post on 12-Jan-2017

558 views 1 download

Transcript of Docker超入門

Docker超⼊⾨2016.04.27

Presented By Katsunori Kanda (@potix2)

⽬次

1. インストール⽅法 2. Dockerを使ってみる 3. イメージを作る 4. Dockerを取り巻く環境

1. Dockerのインストール (Mac OS X)

Dockerのインストール(Mac OS X)

$ brew install docker $ brew install docker-machine

1.VirtualBoxのインストール • https://www.virtualbox.org/wiki/Downloads

2.docker/docker-machineのインストール

docker-machineの初期化$ docker-machine create --driver virtualbox default $ docker-machine ls

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.XX.XXX:2376 v1.10.3

$ eval “$(docker-machine env default)” $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE

dockerの実⾏環境

docker-machine管理のVM

DOCKER_HOSTclient

docker daemon

imagescontainers

192.168.XX.XXX:2376

イメージとコンテナ• イメージ

• プログラム+実⾏環境(ファイルシステム) • 例: redis, bash, nginx

• コンテナ • 仮想実⾏環境 • イメージが読み込まれて実⾏される

2. Dockerを使ってみる

Hello World$ docker run hello-world

Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 03f4658f8b78: Pull complete a3ed95caeb02: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest

Hello from Docker. (以下、省略)

Registry (docker hub)

何が起こったか?DOCKER_HOSTclient

docker daemon

imagescontainers

1. docker run hello-world

hello-world

2. pull

hello-world

3. download

4. load5. exec

redisを実⾏してみる(1/2)$ docker run -d --name myredis redis $ docker exec -it myredis /bin/bash # redis-cli info

myredisclient

redisを実⾏してみる(2/2)$ docker run -d -p 6379 --name myredis2 redis $ docker-machine ip default 192.99.XXX.XXX $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 42635bd006fd redis "docker-entrypoint.sh" 12 seconds ago Up 12 seconds 0.0.0.0:32771->6379/tcp myredis2 $ redis-cli -h 192.99.XXX.XXX -p 32771

myredis2client

port: 32771port: 6379

3. イメージを作る

centos6ベースのredisイメージ作成(1/2)

FROM centos:centos6

RUN yum -y update RUN yum -y install epel-release RUN yum -y install redis

EXPOSE 6379

CMD [ "redis-server" ]

Dockerfile:

$ mkdir docker-myredis $ cd docker-myredis $ vi Dockerfile

centos6ベースのredisイメージ作成(2/2)

$ docker build -t myredis:centos6 . (以下、動作確認) $ docker images $ docker run -d -p 6379 myredis:centos6 $ docker ps $ redis-cli -h `docker-machine ip` -p 32768 info

Dockerfile• FROM: ベースイメージを指定 • RUN: コマンドを実⾏する • ADD: イメージへファイルを追加 • CMD: runしたときに実⾏されるコマンド • EXPOSE: コンテナ外へポートを公開 • 詳しくは、

• https://docs.docker.com/engine/reference/builder/

Dockerfileの意味FROM centos:centos6

RUN yum -y update

RUN yum -y install epel-release

RUN yum -y install redis

EXPOSE 6379

CMD [ "redis-server" ]

FROM

RUN

RUN

RUN

EXPOSE

CMD

1コマンドが1レイヤーに対応する

Dockerfileの意味FROM

RUN

EXPOSE

CMD

意味のあるまとまりで⼀つのコマンドにまとめるFROM centos:centos6

RUN yum -y update && \

yum -y install epel-release && \

yum -y install redis

EXPOSE 6379

CMD [ "redis-server" ]

4. Dockerを取り巻く環境

docker-compose

• 複数のコンテナを同時に操作するためのツール • ローカル開発環境はこれでほぼ⾜りる • YAMLで設定を書くだけ

コンテナ管理

• docker-swarm • gke(kubernetes) • ecs • shipyard • nomad