![見出し画像](https://assets.st-note.com/production/uploads/images/36234562/rectangle_large_type_2_ea692536d87a48688c9ba05c0c014b8e.jpg?width=1200)
#マンガでわかるDocker ② 〜開発環境を作ろう編〜【読書メモ】
「#マンガでわかるDocker ① 〜概念・基本コマンド編〜 」の続編です。
全3巻のうちの2巻です。
マンガでわかるDocker ② 〜開発環境を作ろう編〜 【ダウンロード版】
どんな本?
実際にDocker で開発環境を作成する方法や、Vagrant との違いなどについて学べます。
対象読者は「前作で基本コマンドをさわってみた&コマンドラインとVim を使ったことがある人」です。
ターミナルのスクショに吹き出しで補足説明がついていたりして、細部までわかりやすいです。
なんで読もうと思ったのか
・「#マンガでわかるDocker ① 〜概念・基本コマンド編〜 」がものすごくわかりやすかったため
・ローカル環境をDocker でサクッと作れるようになりたかったため
目次
・Dockerはどう便利? あるとき・ないとき
・Vagrantとの違い
・PHPのローカル開発環境をサクッと作ってみよう 〜マウント完全に理解した〜
・自分好みのイメージを作ろう 〜Dockerfileを書いてみよう〜
・Docker Hubにイメージを公開しよう 〜GitHubと組み合わせてオートメーションビルド〜
特に勉強になったところ
■ Docker がないと何が困るのか
・「Aさんの環境では動くのに、Bさんの環境では動かない」ということがよくある
・Docker があると、コマンド一発で確実に同じローカル開発環境を作れる (=みんなのローカル開発環境が揃う)
・すでに配布されているイメージを支えるため、1から作らなくていい。さらにカスタマイズもできる
■ ローカル開発環境をサクッと作る
・コンテナ起動
docker run -d -p 80:80 --name {イメージ名} php:7.0-apache
※ -d オプション:コンテナをバックグラウンドで動かす
コンテナにサーバー機能を持たせたいときは対話式(-it) ではなく-d
-p オプション:左がアクセスされるポート番号。右がコンテナ側のポート番号
・コンテナにログイン
docker exec -it {イメージ名} bash
■ マウント
・コンテナの中にファイルを作っても、コンテナを消したらファイルが消えてしまう。それは困るのでマウントする
・マウントとは、簡単にいうと「Docker コンテナ内に外部記憶装置としてローカルディレクトリの一部を組み込み、Docker コンテナがローカルディレクトリを参照できるようにすること」
docker run -d -p 80:80 --name {イメージ名} -v $(pwd):/var/www/html php:7.0-apache
※ -v オプション:対象のパスをマウントさせる。
左がローカルディレクトリ。右がコンテナ内のパス
■ Docker Hub で自作イメージの自動生成・公開を行う流れ
1. 作ったDockerfile をGitHub に公開
2. Docker Hub 上でリンク設定
3. Docker Hub 上に自作イメージを公開
感想
前作に引き続き、初心者目線のわかりやすい解説がありがたすぎる。
おかげで挫折せずに済みました...!
Vagrant < Docker の理由にも触れてくれていて、納得感がありました。
Dockerfile があれば[docker build] コマンドでサクッと環境が作れるのは本当に画期的ですね。
今更だと思いますが学べてよかったです。。良書。