Docker超入門
-
Upload
katsunori-kanda -
Category
Technology
-
view
558 -
download
1
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