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オンリーもあるよ!!
 
 - 例: WordPressが欲しいなら、それをポチるだけで簡単に!!
 - 今回のゴールはdockerを実行できる環境をなるべく早く提供する
- OSのみ->Ubuntuへ
 
 
 - Lightsailの良いところ: アプリケーション組み込みで提供されている
 - 
SSHキーペアマネージャー
- OSにログインするための公開鍵認証の鍵を設定することが可能
 ssh-keygenとかで手元にあるid_rsa.pubとか入れてあげると、後述のSSHログインで超楽に
 - 
あとはインスタンスのCPU、メモリとか、起動スクリプトとか...興味があったら調べてみてね!
 
ログイン
- 作成時に同時にグローバルIPが提供される!!
- すげぇ!!
 
 - OSによってログイン時のユーザーが変わる
- Ubuntuの場合: ubuntu
 ssh -l ubuntu <グローバルIP>- アップロードしたid_rsa.pubに対応するid_rsaを勝手に試して入れる
- メモ: 秘密鍵指定することもできるしconfig指定もできる
 
 
- アップロードしたid_rsa.pubに対応するid_rsaを勝手に試して入れる
 
 - OSが古い可能性あるので更新
- sudo apt update
 - sudo apt upgrade
 
 - 使用するDockerについて
- 今回: Docker-CE(Community Edition)
 
 
Docker-CEのインストール
手順は上記の公式通りにいけばOK!
- 1(書けなかった)
 - 2 gpgをインストールするための準備
 - 3 (書けなかった)
 - 4 環境の選択
- 今回のLightsail: x86_64
 
 
- 先ほど追加したリポジトリの情報を追加
 - パッケージのインストール
 - (書けなかった)
 - dockerの動作確認
 
- Hello from Docker
 - メモ: このイメージちょっと面白いので気になる人は見てほしい
 
Docker Hubからのインストール: httpd
- https://hub.docker.com/  で調べる
- apacheで検索
 - https://hub.docker.com/_/httpd
 
 - 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- http://lightsail上のパブリックIP:8000/  にアクセス
- **Welcome to enginx!**と表示されればOK
 
 
- http://lightsail上のパブリックIP:8000/  にアクセス
 
静的IPについて
- 便利なボタンの勝かい
- ネットワーク -> 静的IPの作成
- Lightsailは自動でグローバルが使えるメリット
 - 反面、Lightsailは再起動毎にIPが変わってしまう
 - 注意: 作成ボタンを押した時点で自動付与されたIPは使えなくなる
 - note: Elastic IP使ってる気がする
 
 
 - ネットワーク -> 静的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の中までいじれる?
- ちょっと不明
 
 
 - コードでOSを提供できる <-> Hyper-visor上でOSを動かす
 
cutlerさん: cutler: Docker は、中で systemd 動いてないので嫌! 今までと手順変わるから嫌! sshd 動かしたい! みたいのを言われたことも過去にあり、場合によっては導入が難しい部分があったりするのですよね。
- すごく難しいところ。
 - 「systemdが無いと」...それはなぜ?
- それさえ聞ければその対処方法が見つかるかも
 - 現行踏襲とかだときついよね...
 
 - 結論: Dockerはそれが必要ない
- docker exec bashとか
 - AWSのシステムズマネージャーで駆逐されろ!!w