Successfully reported this slideshow.
Your SlideShare is downloading. ×

Dockerことはじめ的なはなし

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Virtualbox+vagrant+docker
Virtualbox+vagrant+docker
Loading in …3
×

Check these out next

1 of 15 Ad

Dockerことはじめ的なはなし

Download to read offline

2016/4/29にdockerのもくもく会をやったとき、作りかけてできてなかった資料を放置するのもなんなので追記してアップしました。間違いがあるかもしれませんのでその場合は教えてください。

2016/4/29にdockerのもくもく会をやったとき、作りかけてできてなかった資料を放置するのもなんなので追記してアップしました。間違いがあるかもしれませんのでその場合は教えてください。

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to Dockerことはじめ的なはなし (20)

Advertisement

Recently uploaded (20)

Advertisement

Dockerことはじめ的なはなし

  1. 1. Docker ことはじめ的なはなし 2016.05.10 @pinmarch_t
  2. 2. アジェンダ ● Dockerとは ● Dockerにいたるまで ● DockerイメージとDockerコンテナ ● Dockerコンテナを動かす ● Dockerイメージを作る 2
  3. 3. Dockerとは もともとはDotCloud(PaaS)で使用するために開発された。 デプロイメントシステム。 DotCloud社がDocker社に社名変更。 3
  4. 4. Dockerはいったい何をするのか よく比較されるのがVM(仮想マシン)。 Dockerはコンテナを提供する。 物理マシンへの負荷は完全仮想化>コンテナ型 4 OS Kernel OS Kernel 物理ハードウェア 物理ハードウェア 仮想ハードウェア VM VM VM コン テナ コン テナ コン テナ 仮想マシン(完全仮想化) Docker(コンテナ型) OS Kernel 各コンテナはプロセスとして 稼働している Dockerデーモン ※完全仮想化よりコンテナ型に近い仮想化に準仮想化がある
  5. 5. Dockerにいたるまで Dockerのような仕組みは昔からある。 ● chroot ○ ファイルシステムのルート (/)を変える ○ クロスコンパイル(他のOS、アーキテクチャ用のバイナリ生成 )をするのに便利 ● Jail (FreeBSD jail) ○ OSレベル仮想化(Dockerと同じ) ○ 独立したファイルシステム ○ 独立したプロセス空間 ○ 独立したユーザーアカウント 5
  6. 6. DockerイメージとDockerコンテナ DockerはDockerイメージを起動させて、Dockerコンテナとして実行する。 (クラスのオブジェクトとインスタンスのような関係) イメージの一覧を出す $ docker images イメージをDocker Hubからダウンロードする $ docker pull ubuntu:latest イメージを削除する $ docker rmi ubuntu:latest 6
  7. 7. DockerイメージとDockerコンテナの関係 7 Dockerイメージ Dockerコンテナ docker run some-image 1つのdockerイメージからいく つもコンテナを走らせることが できる。 1イメージIDに対して複数コン テナIDが生成される。 ● Dockerは透過的にマウントするファイ ルシステムを採用している。 ● DockerコンテナはDockerイメージの ファイルシステムをマウントする。 ● Dockerイメージのファイルシステムを 直接書き換えすることはない。 ● 各dockerコンテナのファイルシステム は互いに干渉しない (書き換え可能な 共有ボリュームを除く )。
  8. 8. Dockerコンテナを動かす $ docker run “image name” 例 $ docker run centos:centos7 ⇒ すぐ終わる $ docker run -it ubuntu /bin/bash ⇒ インタラクティブシェルに入る 動いているコンテナを列挙 $ docker ps 終了したコンテナも含めて列挙 $ docker ps -a 実行したコンテナを削除する $ docker rm “container id” $ docker rm $(docker ps -aq) ⇒ 終了したコンテナを全部削除 (動いているものはエラーになる ) $ docker run --rm -it ubuntu /bin/bash ⇒ コンテナが終了したら自動で削除 8
  9. 9. Dockerコンテナのライフサイクル 9 Dockerイメージ Dockerコンテナ docker run some-image docker ps で見える docker ps -a で見える docker commit container-ID docker stop container-ID (自然に終了) docker サブコマンドはほかにもいろいろある。 https://docs.docker.com/engine/reference/commandline/cli/ docker rm container-ID docker start container-ID docker attach container-ID
  10. 10. ボリュームを共有する コンテナが起動したとき、中のファイルシステムは書き換えても外に影響しない。 コンテナの外とファイルシステムを共有する $ docker run -v /path/to/outside:/path/to/inside “image name” $ docker run -v /path/to/outside:/path/to/inside:ro “image name” ⇒ read onlyで共有 USBなどのデバイスもコンテナ内からアクセスするためには共有する必要がある。 $docker run --device /dev/sdc1:/dev/sdc1 “image name” (GPUをコンテナ内から使う場合などに必要 ) 10
  11. 11. ポートを共有する Dockerコンテナはdocker01というブリッジを介して NATを構成している。 ネットワーク構成を列挙する $ docker network ls https://docs.docker.com/engine/userguide/networking/dockernetworks/ 接続構成を列挙する $ docker network inspect bridge “bridge”はdocker network lsで出力された名前 コンテナ内のポートに外のポートと繋げる $ docker run -p 8888:8080 “image name” ⇒ ホストのポート8888とコンテナの8080を繋ぐ 11 192.168.0.4 172.17.0.3172.17.0.4 container1 container2 host
  12. 12. Dockerイメージを作る Dockerfileを作成する。 基本的な書き方(例): # コメント FROM ubuntu:latest FROM … 既存のdockerイメージを参照する、というディレクティブ ubuntu:latest … 既存のdockerイメージ $ docker build -t “image name” <path or dockerfile> 12
  13. 13. Dockerfileの例 curlをインストールしたイメージを作り、 runするとバージョン情報を表示して終了する。 FROM ubuntu:latest MAINTAINER pinmarch <pinmarch@email.com> RUN apt-get -y update && apt-get -y install curl CMD /usr/bin/curl -V 13
  14. 14. ENTRYPOINT vs. CMD いろいろあるんですよこれが 14
  15. 15. fin. Let’s enjoy docker! 15

×