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

Dockerを触ってみよう

 Dockerを触ってみよう

Cloud Natice Okayama #01 で発表したスライドです。

akira345

April 20, 2019
Tweet

More Decks by akira345

Other Decks in Technology

Transcript

  1. あなた誰? • 名前:金田 晃(HN) • 趣味: • 自宅サーバ、自宅インフラ • 自宅Docker

    • AWS、PHP、Ruby、etc… • 電子工作、基板づくり • ジャンク漁り • 機械の分解、故障診断と修理 • 所属: • 広島電子工作娯楽部 • えれくら! • 元PL/SQLで元AWSで元鯖缶
  2. Docker is 何?  Vagrantと何が違うの?  コンテナって何?JR的な奴?なんでコンテナなのにクジラなの?  調べてみたけど、BSDのJail?Solarisコンテナと何が違うの? 

    Dockerって止めたらデータも消えるんでしょ?そんなの役に立つの?  起動が早いらしい  なんで流行っているのか分からん。XAMPP最強じゃね?  コンテナで簡単にというけど、逆にカスタマイズどうするのさ。Vagrantだっ て山のように設定するぞ。  DockerのPHPとCentOSのPHPって同じなの?  CronとかFTPとかSSHとかいままで出来ていた事をするにはどうすればいいの?  セキュリティやパッチ当てもせずデフォ設定で動いてそれ大丈夫なん??
  3. CentOSあるある(架空の例です)  WordPressを動かすぞ! 標準リポジトリでPHP、MySQL、Apacheを入れる。 データベースを覗きたいな。 phpMyAdminを入れる PHPのバージョンが古いよ!MySQLが古いよ! RemiやRPMForgeなど外部リポジトリをググって入れる。 依存関係でガリガリ汚染される(この時はたいてい気づかない) 

    Railsやってみたいな。 ググってrbenvな環境を作る。 Gemのインストールでライブラリ依存でコケる。nokogiri辛い・・・・ 依存パッケージを消すと、PostfixやCronなどが消し飛んだ(涙  OSのセキュリティアップデート当てないとな。 以下略・・・
  4. チュートリアルをする時間はないので・・ ここでは、Dockerに触ることを目的とし、とりあえ ずPHP公式コンテナを動かしてみましょう。 docker run -d -v "%cd%/web:/var/www/html" -p 80:80

    --name okayama-php71 php:7.1-apache %cd%はコマンドプロンプトで相対パス 指定するため。LinuxやMacは多分 $PWDでいける・・と思う
  5. dockercompose dockercomposeは1つ以上のコンテナを作る定義を記述したもの。 (実際はかなり機能があるので、リファレンス参照のこと) docker run -d -v "%cd%/web:/var/www/html" -p 80:80

    --name okayama-php71 php:7.1-apache version: ‘3’ services: php71: image: php:7.1-apache volumes: - ./web:/var/www/html ports: - 80:80 docker-compose.yml
  6. docker-composeで書くとこんな感じ version: '3' services: php71: image: php:7.1-apache volumes: - ./web:/var/www/html

    ports: - 80:80 php72: image: php:7.2-apache volumes: - ./web:/var/www/html ports: - 8081:80
  7. Dockerで難しいと思うところ  どのサイズでコンテナ化すればいいか悩む  基本1プロセス1コンテナらしいけど、それだと構成要素が増えすぎて管理が手間 だしなぁ・・・ 3つを超えたあたりからcomposerでも管理がカオス気味に・・  データコンテナってどの単位で作ればいいんだろう? 

    初期設計が難しい・・  Cronやiptablesやsyslogなど当たり前にできたことをどうすればいいのか?が悩む  Docker内にユーザを作ったりSSHキーを入れたりするのはどうなんだろう???  メモリ消費やディスクIOが多い気がする。割とサクッと死ぬので実運用はちょっと怖い。  ログを監視して何かアクションを起こす系はどうするのがいいんだろう??
  8. まとめ  開発環境など一時的な環境をサクッと作るにはDockerはおす すめ。  環境をゲームのソフトのように扱える。  コンテナ内に永続的データは保持できないので、サーバ内に 状態を持たせるなど永続的データとそうでないものの区別を する必要がある。

    サーバの冗長構成をとる際には必須の考え方なので、開発 者に意識させるのにちょうどいい(ぇ  一つのサーバに何でもやらせてたのとは勝手が違うので、構 成や設計には注意が必要。