最近、社内でDockerについて本当に触りの部分について説明しました。
聞いてくれた1/3の方は、実務・自主で触れた経験あり。
他の方は初耳みたいな感じだったのですが・・・
反応があまりにも悪かったので反省の意味を込めて 再度まとめ直し 。
正しい使い方でなくても、とりあえずローカルの開発環境をDockerで作ってみよう!!って思えたら嬉しいです。
内容を理解してもらえるように、4回に分割してお伝えできればと思っています。
前提
- Docker初心者が対象です
- VM(VirtualBox)で環境を構築した経験があった方が理解しやすいかも
Docker ってなんなの?
Wikipediaより引用
Docker(ドッカー[2])は、コンテナと呼ばれるOSレベルの仮想化(英語版)環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
(https://ja.wikipedia.org/wiki/Docker)
『Docker』で検索すると、よく画像で『物理マシンの上にホストOS・・・』っていう画像が多くヒットします。
いきなり見せられても 敷居が高いように感じてしまう 気がしました (実際、社内でやった時に載せて説明したけど、ポカーンって感じだった気がする)
なので・・・環境を素早く作って・・・破壊して・・・また素早く作って・・・
環境の再生と破壊が楽にできる!! くらいに思っておいてもらえたらいいです。
便利なんですか?
百聞は一見に如かずということがあるので・・・例えば、こんな環境を用意してみましょう。
PHP7.2(※最新版)が動作するWebサーバを構築
「Chef」や「Ansible」を用いたり、インストール手順のコマンドをコピペしたりとしながら、まっさらなLinuxOSに構築するイメージが湧いたかとおもいます。
これをDockerで作ろうと思ったら・・・・
以下の作業をしてブラウザで『 http://localhost 』にアクセスするだけです。
demo
┗ index.php
<?php phpinfo() ?>
$ cd demo
$ docker run --rm -p80:80 -v $PWD:/var/www/html php:7.2-apache
これは極端な作り方ですが、要件の環境はできています。
現実だとWebサーバだけ構築だけとはいかず
データベースとか、他のパッケージとかインストール必要があると思います。
みて さわって ふれて みよう!!
自分が理解を深めていったやり方をそのまま紹介しようと思います。
Webサービスを作ろうと思った時に用意する環境を対象にして説明します。
構築する環境
- OS: CentOS(※中級からOSはDockerイメージに依存しているため違います)
- Web: Apache + PHP
- DB: MySQL
【初級】VMみたいに使ってみた
第2回に記載
- Dockerを構成するコンポーネント
- Dockerfileについて
- Dockerコマンド
- アクセスするポート指定
- ローカルPCのマウント
- 起動と停止
- 起動中のコンテナへログイン
【中級】本番環境を意識した役割で細分化してみた
第3回に記載
- Docker-composeについて
- Docker-composeコマンド
- 起動と停止
- 起動中のコンテナへログイン
【上級】コンテナオーケストレーションを意識して作ってみた
第4回に記載
- 1コンテナで1サービス起動するため
- ローカルk8sでの構築
- Google Cloud PlatformのGKEでの構築
- GCRへプッシュ
- kubectlコマンド
- 設定の変更・反映
最後
第1回は、あまり内容のない記事になってしまいスミマセン。
続きで第2回とかも読んでいただけると幸いです。