Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Docker超入門

813 Aufrufe

Veröffentlicht am

社内で開催したDocker初心者向け勉強会での発表資料です

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Docker超入門

  1. 1. Docker超⼊⾨ 2016.04.27 Presented By Katsunori Kanda (@potix2)
  2. 2. ⽬次 1. インストール⽅法 2. Dockerを使ってみる 3. イメージを作る 4. Dockerを取り巻く環境
  3. 3. 1. Dockerのインストール (Mac OS X)
  4. 4. Dockerのインストール(Mac OS X) $ brew install docker $ brew install docker-machine 1.VirtualBoxのインストール • https://www.virtualbox.org/wiki/Downloads 2.docker/docker-machineのインストール
  5. 5. 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
  6. 6. dockerの実⾏環境 docker-machine管理のVM DOCKER_HOSTclient docker daemon imagescontainers 192.168.XX.XXX:2376
  7. 7. イメージとコンテナ • イメージ • プログラム+実⾏環境(ファイルシステム) • 例: redis, bash, nginx • コンテナ • 仮想実⾏環境 • イメージが読み込まれて実⾏される
  8. 8. 2. Dockerを使ってみる
  9. 9. 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. (以下、省略)
  10. 10. Registry (docker hub) 何が起こったか? DOCKER_HOSTclient docker daemon imagescontainers 1. docker run hello-world hello-world 2. pull hello-world 3. download 4. load 5. exec
  11. 11. redisを実⾏してみる(1/2) $ docker run -d --name myredis redis $ docker exec -it myredis /bin/bash # redis-cli info myredisclient
  12. 12. 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: 32771 port: 6379
  13. 13. 3. イメージを作る
  14. 14. 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
  15. 15. 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
  16. 16. Dockerfile • FROM: ベースイメージを指定 • RUN: コマンドを実⾏する • ADD: イメージへファイルを追加 • CMD: runしたときに実⾏されるコマンド • EXPOSE: コンテナ外へポートを公開 • 詳しくは、 • https://docs.docker.com/engine/ reference/builder/
  17. 17. 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レイヤーに対応する
  18. 18. 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" ]
  19. 19. 4. Dockerを取り巻く環境
  20. 20. docker-compose • 複数のコンテナを同時に操作するためのツール • ローカル開発環境はこれでほぼ⾜りる • YAMLで設定を書くだけ
  21. 21. コンテナ管理 • docker-swarm • gke(kubernetes) • ecs • shipyard • nomad

×