Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker 入門

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for airhand airhand
July 03, 2018
99

Docker 入門

docker 概念とチュートリアル

Avatar for airhand

airhand

July 03, 2018
Tweet

Transcript

  1. 対比 比 較 対 象 ハイパーバイザ コンテナ OS 自由に選択できる 基本的にホストOS

    と同一 *1 効 率 VMそれぞれでOSを起動 するので、リソース効率 が悪い OSを共有するの で、オーバーヘッド が少ない *1 Kernelには後方互換性があるので、Ubuntu上で CentOSコンテナを起動するといったことも可
  2. Docker app Docker Toolbox (Windows, Mac + Oracle VirtualBox) Docker

    for Windows (Windows 10 Pro + Hyper-V) Docker for Mac (Mac El Capitan or Newer + Hypervisor)
  3. Powershellでコマンド実行 # "hello-world"イメージをダウンロード docker pull hello-world # hello-worldイメージからコンテナを生成、起動 docker run

    hello-world # nginxイメージからwebserverという名前でコンテナを生成 # 80ポートで待機 (pullを除くと3秒前後で起動した) docker run --detach --publish 80:80 --name webserver nginx # webserverコンテナを停止 docker stop webserver # webserverコンテナを再開 docker start webserver
  4. Docker le # Dockerhubのpython 3.6.6 slimイメージを元に作成 FROM python:3.6.6-slim # ワーキングディレクトリを/appにセット

    WORKDIR /app # /appにカレントディレクトリのファイル等をコピー ADD . /app # pip インストールを実行 RUN pip install -r requirements.txt # 80番ポートを開放 EXPOSE 80 # 環境変数をセット ENV Name Foo # コンテナ起動時にapp.pyを実行 CMD ["python", "app.py"]
  5. Docker le # myfirstappという名前でイメージをビルド docker build -t myfirstapp . #

    ホストの4000番ポートとコンテナの80番ポートをマップして起動 docker run --publish 4000:80 myfirstapp # 確認 curl http://localhost:4000
  6. docker-compose.yml version: "3" services: web: image: myfirstapp deploy: replicas: 5

    resources: limits: cpus: "0.1" memory: 50M restart_policy: condition: on-failure ports: - "4000:80" networks: - webnet networks:
  7. docker-compose.yml # クラスタ環境を構築 docker swarm init # クラスタ環境に記載した通りのサービスをデプロイ docker stack

    deploy -c docker-compose.yml # ラウンドロビン方式で各インスタンスにリクエストが割り振られる curl http://localhost:4000