20190401-dozono 30分クッキング – AWS LightsailでDocker環境を作る-

ref: https://wp.infra-workshop.tech/event/dozono-30min-docker-on-aws-lightsail/ 

概要

  • Lightsail: computingにカテゴライズされているもの
    • メモリ、CPUを提供する
    • EC2もあるが、それを抽象化している
      • もっと簡単にクラウド環境を使える
      • VPSのようなものを使えるようにしてくれる
    • 今回はこれを使ってDockerを使えるようにする

インスタンスの作成

  • リージョン、アベイラビリティゾーンについて

    • どこのデータセンターで稼働させるか動かせる
      • 現在20リージョンくらいある
      • 日本向け...東京 アメリカ...オハイオなど、ユーザーに
      • 興味があればAWS グローバルインフラストラクチャで検索
    • 名前の通り、可用性を提供する
  • インスタンスイメージの選択

    • Lightsailの良いところ: アプリケーション組み込みで提供されている
      • 例: WordPressが欲しいなら、それをポチるだけで簡単に!!
        • Joomla, gitlabなどなど
      • 温かみのあるOSオンリーもあるよ!!
    • 今回のゴールはdockerを実行できる環境をなるべく早く提供する
      • OSのみ->Ubuntuへ
  • SSHキーペアマネージャー

    • OSにログインするための公開鍵認証の鍵を設定することが可能
    • ssh-keygenとかで手元にあるid_rsa.pubとか入れてあげると、後述のSSHログインで超楽に
  • あとはインスタンスのCPU、メモリとか、起動スクリプトとか...興味があったら調べてみてね!

ログイン

  • 作成時に同時にグローバルIPが提供される!!
    • すげぇ!!
  • OSによってログイン時のユーザーが変わる
    • Ubuntuの場合: ubuntu
    • ssh -l ubuntu <グローバルIP>
      • アップロードしたid_rsa.pubに対応するid_rsaを勝手に試して入れる
        • メモ: 秘密鍵指定することもできるしconfig指定もできる
  • OSが古い可能性あるので更新
    • sudo apt update
    • sudo apt upgrade
  • 使用するDockerについて

Docker-CEのインストール

手順は上記の公式通りにいけばOK!

  • 1(書けなかった)
  • 2 gpgをインストールするための準備
  • 3 (書けなかった)
  • 4 環境の選択
    • 今回のLightsail: x86_64
  1. 先ほど追加したリポジトリの情報を追加
  2. パッケージのインストール
  3. (書けなかった)
  4. dockerの動作確認
  • Hello from Docker
  • メモ: このイメージちょっと面白いので気になる人は見てほしい

Docker Hubからのインストール: httpd

  • https://hub.docker.com/  で調べる
  • sudo docker search httpd
    • OFFICIAL OK となっているものは大事
  • sudo docker container run -d -p 8080:80 httpd
    • -d : バックグラウンド実行
      • デタッチ
      • bashの & 付き実行のようなもの
    • -p 8080:80 : 外部からの8080番のアクセスをdockerで実行するコンテナの80番のアクセスにマッピングする
      • publish
      • Lightsailでは独自のファイアウォールが設定されているので、アプリケーションCustomで開ける必要あり
      • http://lightsail上のパブリックIP:8080/  にアクセス
      • **It works!**と表示されればOK
  • sudo docker container run -d -p 8000:80 nginx

静的IPについて

  • 便利なボタンの勝かい
    • ネットワーク -> 静的IPの作成
      • Lightsailは自動でグローバルが使えるメリット
      • 反面、Lightsailは再起動毎にIPが変わってしまう
      • 注意: 作成ボタンを押した時点で自動付与されたIPは使えなくなる
      • note: Elastic IP使ってる気がする

質問解答

  • 北海道からの配信(wow)

宗教的にec2使えない人でもおkなやつか

  • その通り。別サービスとして考えてもらっていい

Firewalld?

  • マシンを立ち上げるときに複数OSを選択できる
    • CentOS, OpenSUSE, Windows...
    • Lightsailの画面でOSの中に干渉しているとは考えにくい
      • ハイパバイザで提供している気がするかも(要確認)

DigiatlOcean の Firewall ルール設定画面はこういうのなんですよね。

  • マジだ!
    • メモ: DigitalOceanがインスパイアしたのかな

Q. Dockerってどういう環境に使うべきなんですか?

  • ほとんどのケースで1個のコンテナのイメージを持ち運び

    • Win, Mac, Linux
    • AWS, etc...
  • システムはアプリケーション担当者のみで無理 <-> インフラ管理者のみでも無理

    • お互いに"想い"がある
    • これを解決するソリューション
      • アプリケーション: 必要な環境を全て詰め込める
        • OS, ライブラリ, バージョン, ...
      • インフラエンジニア: HWリソースに集中できる
        • CPU, ストレージ等に専念できる
      • 責任分界点が明確になる
  • 上記の内容は組織の形が関係してくるかも

    • インフラ側としては、足を引っ張っていたかも
      • MW関連をインフラエンジニアが見ていて、境界が中途半端
      • それを解消してくれた

仮想マシン vs コンテナの観点だとどうでしょうか。OVFファイルで可搬性はありそうですが。

  • OVFファイルの概要(しょうりゃく)
    • ディスクイメージの互換性は提供されていない
      • 変換が必要だったりする
  • Vagrantについて
    • コードでOSを提供できる <-> Hyper-visor上でOSを動かす
      • スタックが増える
      • リードタイムが増える
    • コンテナは早い <-> 完全な可搬性は提供されているわけではない
      • CI/CDでちゃんとテストして動くことを保証しましょう
    • OSの中までいじれる?
      • ちょっと不明

cutlerさん: cutler: Docker は、中で systemd 動いてないので嫌! 今までと手順変わるから嫌! sshd 動かしたい! みたいのを言われたことも過去にあり、場合によっては導入が難しい部分があったりするのですよね。

  • すごく難しいところ。
  • 「systemdが無いと」...それはなぜ?
    • それさえ聞ければその対処方法が見つかるかも
    • 現行踏襲とかだときついよね...
  • 結論: Dockerはそれが必要ない
    • docker exec bashとか
    • AWSのシステムズマネージャーで駆逐されろ!!w

最後に