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