From 44ba18bb90cbf7393cc6b3f7c6fe31b5fb7cc833 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 19:29:06 +0900 Subject: [PATCH 01/18] Add: Add an intoroduction --- SUMMARY.md | 2 ++ docs/lecture/introducing-docker/0-index.md | 29 +++++++++++++++++++ .../introducing-docker/1-what-is-docker.md | 1 + 3 files changed, 32 insertions(+) create mode 100644 docs/lecture/introducing-docker/0-index.md create mode 100644 docs/lecture/introducing-docker/1-what-is-docker.md diff --git a/SUMMARY.md b/SUMMARY.md index c700a4d..1110329 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -5,4 +5,6 @@ * [資料を追加するには](docs/misc/wiki-usage/how-to-add-post.md) * [エディタを選ぼう](docs/lecture/select-editor/select-editor.md) * [JavaScript(ES6)入門](docs/lecture/js-getting-started.md) +* [Docker](docs/lecture/introducing-docker/0-index.md) + * [Dockerとは?](docs/lecture/introducing-docker/1-what-is-docker.md) diff --git a/docs/lecture/introducing-docker/0-index.md b/docs/lecture/introducing-docker/0-index.md new file mode 100644 index 0000000..a59c63b --- /dev/null +++ b/docs/lecture/introducing-docker/0-index.md @@ -0,0 +1,29 @@ +# Docker + +- Author: [coord.e](https://twitter.com/coord_e) + +## この記事について + +ここでは、[Docker](https://www.docker.com/)というソフトウェアについて + +- 何をするものか +- 導入の利点 +- 各種概念(イメージ、コンテナなど)について +- 使用方法 + +について解説する。なおここでは以下の点には触れないため、各自[参考書籍](#further-reading)を別途参照されたし。 + +- Docker内部の仕組み(コンテナランタイムなど) +- 発展的な利用(マルチアーキテクチャ、マルチステージビルドなど) +- インフラに組み込んだ活用 + +### 対象読者 + +- 自分の開発を効率化するためにDockerを使いたい人 +- Dockerについて聞いたことがあるが、なんだかわからないか使えるようになりたい人 +- SakutenDevでインフラを担当する人 +- など + +## 次 + +[Dockerとは?](1-what-is-docker.md) diff --git a/docs/lecture/introducing-docker/1-what-is-docker.md b/docs/lecture/introducing-docker/1-what-is-docker.md new file mode 100644 index 0000000..870742d --- /dev/null +++ b/docs/lecture/introducing-docker/1-what-is-docker.md @@ -0,0 +1 @@ +## Dockerとは? From f7e941c3eb5f7953f6e2a71a9ba1e3012aa350ad Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 21:25:32 +0900 Subject: [PATCH 02/18] Add: Write "What is docker" section --- .../introducing-docker/1-what-is-docker.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/lecture/introducing-docker/1-what-is-docker.md b/docs/lecture/introducing-docker/1-what-is-docker.md index 870742d..74544de 100644 --- a/docs/lecture/introducing-docker/1-what-is-docker.md +++ b/docs/lecture/introducing-docker/1-what-is-docker.md @@ -1 +1,56 @@ ## Dockerとは? + +> Docker(ドッカー)はコンテナ型の仮想化環境を提供するオープンソースソフトウェアである。 + +[Docker - Wikipedia](https://ja.wikipedia.org/wiki/Docker) + +意味がわからないので噛み砕いて説明する(Wikipediaにマウントを取ろうとするオタクなので) + +## 例として考えるシステム + +ここでは例として、以下のようなシステムを動かす状況を考える。 + +1. ソフトウェアA: ライブラリBのバージョン1.0以下とライブラリCのバージョン3.0以上が必要 +2. ソフトウェアD: ライブラリBのバージョン2.0以上が必要 +3. ソフトウェアE: ソフトウェアAとソフトウェアCと通信する必要がある + +(以下、このシステムを「システムS」と呼ぶことにする) + +具体的に考えたければ、 + +- システムS → Webアプリケーションのバックエンド +- ソフトウェアA → データベース +- ライブラリB → ネットワーク処理ライブラリ +- ライブラリC → ファイル操作ライブラリ +- ソフトウェアD → サーバーソフト +- ソフトウェアE → 管理コントロールパネルアプリ + +と置き換えるとイメージが湧きやすいと思う。 + +## 何が嬉しいのか + +Dockerによってもたらされることの本質は、「環境を共有できること」で(あると私は考えてい)る。 + +何かソフトウェアを動かそうとした時に、環境構築に悩まされたことは誰しもある経験だと思う。 +環境構築が必要なのは、本質的には「ソフトウェアが動作するために必要な要件を実行環境に課しているから」であると言える。例えばシステムSで言えば、ソフトウェアDは「ライブラリBのバージョン2.0以上が存在している」という要件をを環境に課している。そのため、ソフトウェアDを動作させるためにはまずライブラリBのバージョン2.0以上を環境に導入して、その要件を満たす必要がある。 +しかし、(ライブラリ1つ程度ならまだしも)要件が複雑になっていくにつれて、動作させるための正確な環境を用意するのは難しくなってくる。システムSで言えば、ソフトウェアAがその一例である。多くの人がそのソフトウェアを使用する場合、その全員に同じ環境を用意してもらうのが骨の折れる作業であることは容易に想像がつくだろう。さらに特定の条件の環境でのみ発生するバグがあった場合、それを複数の開発者が再現させるのはさらに至難の技になる。 + +この問題(環境に対する動作要件が複雑だと困る、ということ)に対し、ソフトウェア開発者たちは様々なアプローチを行ってきた。例えば最近のパッケージマネージャは"lockfile"という、ソフトウェア間の依存関係を正確に記述しておくファイルを生成することが多くなっている([package-lock.json](https://docs.npmjs.com/files/package-lock.json), [yarn.lock](https://yarnpkg.com/lang/ja/docs/yarn-lock/), [Cargo.lock](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html)など)。この手法では、全てのユーザーが簡単なコマンドで(そのパッケージマネージャが管理する範囲内で)同じ環境を用意できるようになっている。 + +しかし、それでもこのアプローチ(lockfile)はそのパッケージマネージャが扱う範囲内でしか問題を解決してくれない。システムの深い部分 -ライブラリが依存しているCのライブラリなど- は、依然としてユーザーごとの環境に依存してしまっているため、ある程度は先述の問題が避けられなくなってしまう。 + +ここで登場するのがDockerだ。Dockerを使うと、「環境それ自体」を丸ごと配布(共有)できる。システムSで例えるならば、ソフトウェアAを配布する際に、ソフトウェアAの動作に必要なライブラリBとライブラリCを含んだ環境を配布するということだ。ユーザーはそれを使って、意図された環境で確実にソフトウェアAを動作させることができるのである。また利用者全員に同じ環境を配布しているので、バグの再現も容易だ。 + +別の言い方をすると、例えばソフトウェアAが「Ubuntu 18.04にパッケージXを入れた環境」で動作確認ができている場合、「Ubuntu 18.04にパッケージXを入れた環境」をそのままユーザーに配布すればみんな同じ環境で実行できるよね、というなかなか強引な考えなわけだ。とはいえ、Dockerのこのアプローチは世間で広く認められ、非常に広い分野で活用されている。 + +## VirtualBox, Vagrant, VMwareなどとの違い + +技術に詳しい読者なら、VirtualBoxなどのイメージを配布すればいいではないかと思うかもしれない。しかしご存知の通り、これらハイパーバイザ型仮想化ソフトウェアで使用するイメージは巨大で、配布するのは一苦労だ(数GBのファイルを不特定多数に共有するのは大変でしょう)。さらにOSを丸ごと仮想化しているため、仮想環境の起動/終了に非常に時間がかかる。内部ではパソコンを起動/終了するのと同じことをシミュレートしているわけなので、これは避けられないコストだ。 + +Dockerがこれらの仮想化ソフトウェアと違う点は、OS(正確にはカーネル)をホスト環境と共有している点だ。これによってイメージを軽量に保つことができ([Ubuntu 18.10は29MB](https://hub.docker.com/_/ubuntu?tab=tags))、さらに起動/終了も高速に行うことができる。 + +## 不変性/再現性 + +Webアプリケーションなどの複雑なシステムでは、環境の一部を変更しただけでシステム全体の障害につながるということが簡単に起こりうる。Dockerの用意する「環境」は、それ自体不変のもので、変更を加えても容易に以前の状態に戻すことができる。これにより障害に対する対応が簡単になったり、開発の際にトライアンドエラーで試すといったような際の効率が圧倒的に上がったりする。(この辺りは試した方がよくわかると思うので、今は「ふーんそうなんだ」程度に思ってもらえれば構わない) + +次章では、実際に手を動かしながらこれらの利点について体験してもらう。 From 666a77b2acb0355959e5246fe1e10c567e657097 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 21:40:53 +0900 Subject: [PATCH 03/18] Add: Append several notices to intro page --- docs/lecture/introducing-docker/0-index.md | 12 +++++++++++- docs/lecture/introducing-docker/1-what-is-docker.md | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/lecture/introducing-docker/0-index.md b/docs/lecture/introducing-docker/0-index.md index a59c63b..fcbc608 100644 --- a/docs/lecture/introducing-docker/0-index.md +++ b/docs/lecture/introducing-docker/0-index.md @@ -13,7 +13,7 @@ について解説する。なおここでは以下の点には触れないため、各自[参考書籍](#further-reading)を別途参照されたし。 -- Docker内部の仕組み(コンテナランタイムなど) +- Docker内部の仕組み(cgroups、コンテナランタイムなど) - 発展的な利用(マルチアーキテクチャ、マルチステージビルドなど) - インフラに組み込んだ活用 @@ -24,6 +24,16 @@ - SakutenDevでインフラを担当する人 - など +なお、この記事は読者としてある程度GNU/Linuxの扱いに慣れている人を想定している(コマンドライン操作、`/usr/local`などのファイル構造など)。知らないと読めないわけでもないが、わかりにくい点や伝わらない表現があるかもしれない。違和感を感じたらDiscordなどで気軽に質問してほしい。 + +## 用語について + +一般的に様々な意味で使用される用語について、この記事内では特に以下の意味合いで使用している。 + +- 環境: ソフトウェアを実行する際のファイルやプロセスの状態 +- ソフトウェア: 主にユーザーと直接のインタラクションなしで動くようなソフトウェア([MySQL](https://www.mysql.com/jp/)、[nginx](https://nginx.org/ja/)など) +- ライブラリ: 共有ライブラリ。([glibc](https://www.gnu.org/s/libc/)など) + ## 次 [Dockerとは?](1-what-is-docker.md) diff --git a/docs/lecture/introducing-docker/1-what-is-docker.md b/docs/lecture/introducing-docker/1-what-is-docker.md index 74544de..19923dd 100644 --- a/docs/lecture/introducing-docker/1-what-is-docker.md +++ b/docs/lecture/introducing-docker/1-what-is-docker.md @@ -53,4 +53,6 @@ Dockerがこれらの仮想化ソフトウェアと違う点は、OS(正確に Webアプリケーションなどの複雑なシステムでは、環境の一部を変更しただけでシステム全体の障害につながるということが簡単に起こりうる。Dockerの用意する「環境」は、それ自体不変のもので、変更を加えても容易に以前の状態に戻すことができる。これにより障害に対する対応が簡単になったり、開発の際にトライアンドエラーで試すといったような際の効率が圧倒的に上がったりする。(この辺りは試した方がよくわかると思うので、今は「ふーんそうなんだ」程度に思ってもらえれば構わない) -次章では、実際に手を動かしながらこれらの利点について体験してもらう。 +次章では、実際に手を動かしながらこれらの利点について体験してもらうと共に、Dockerを構成する基本概念について説明する。 + +[Dockerを使う](2-use-docker.md) From fddd1a07f8ed6f0fb5adb6143801ae834c923389 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 22:40:26 +0900 Subject: [PATCH 04/18] Add: Add "Use docker" post --- SUMMARY.md | 1 + .../introducing-docker/2-use-docker.md | 103 ++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 docs/lecture/introducing-docker/2-use-docker.md diff --git a/SUMMARY.md b/SUMMARY.md index 1110329..2ed657b 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -7,4 +7,5 @@ * [JavaScript(ES6)入門](docs/lecture/js-getting-started.md) * [Docker](docs/lecture/introducing-docker/0-index.md) * [Dockerとは?](docs/lecture/introducing-docker/1-what-is-docker.md) + * [Dockerを使う](docs/lecture/introducing-docker/2-use-docker.md) diff --git a/docs/lecture/introducing-docker/2-use-docker.md b/docs/lecture/introducing-docker/2-use-docker.md new file mode 100644 index 0000000..02b9c83 --- /dev/null +++ b/docs/lecture/introducing-docker/2-use-docker.md @@ -0,0 +1,103 @@ +# Dockerを使う + +さて、長々しい説明も終わったので実際にDockerを使っていこう。 + +## Dockerのエディション(Edition)について + +- [Docker Enterprise Edition (Docker EE)](https://docs.docker.com/ee/) +- [Docker Community Edition (Docker CE)](https://docs.docker.com/install/) + +の2エディションが存在している。EEは企業向けのものなので、私たちが個人で使う分には基本的にDocker CEを使うことになるだろう。 + +Docker CEは無料で利用できる。 + +## Dockerをインストールする + +インストール方法は本当によく変わるので、英語が読める人は[公式ドキュメント](https://docs.docker.com/install/)を読むのがいいと思う。 + +あまり私の所有していないプラットフォームでのインストール方法については自信がないので、あえて抽象的な説明にとどめておく。ごめんなさい。わからなかったら気軽にDiscordなどで質問してください。 + +### macOSの人 + +1. [ここ](https://hub.docker.com/editions/community/docker-ce-desktop-mac)から、`Docker.dmg`をダウンロードし、中に入っているappをインストールする。 +1.1. (なおHomebrew Caskを使っている人は`brew cask install docker`で入る) +2. `Docker.app`を起動し、指示に従う。(パスワードを聞かれたりします) + +### Windowsの人 + +Microsoft Windows 10 64-bitのProfessionalまたはEnterpriseが必要。 + +1. [ここ](https://hub.docker.com/editions/community/docker-ce-desktop-windows)からインストーラをダウンロードする。 +2. インストーラを実行し、指示に従う。 +3. インストールが完了したら、`Docker for Windows`を起動し、指示に従う。 + +なお、Windows 10 64-bit ProfessionalまたはEnterpriseではないWindows(Windows 10 Homeなど)では、[Docker Toolbox](https://docs.docker.com/toolbox/overview/)を使うことでDockerを使用することができる。しかし、個人的には無料のGNU/Linuxに移行するか新しいWindowsをインストールすることをお勧めする。 + +### GNU/Linuxの人 + +[CentOS](https://docs.docker.com/install/linux/docker-ce/centos/)、[Debian](https://docs.docker.com/install/linux/docker-ce/debian/)、[Fedora](https://docs.docker.com/install/linux/docker-ce/fedora/)、[Ubuntu](https://docs.docker.com/install/linux/docker-ce/ubuntu/)向けのインストールガイドが公式にあるのでそれを見て、インストールする。 + +(全部書けないです、ごめんなさい、わからなかったらぜひ質問してください) + +## Dockerを使ってみる (Hello World) + +```shell +$ docker -v +``` + +バージョンが出てきたと思う。(GNU/Linuxユーザーで権限がどうとか言われた場合は[これをみて](https://docs.docker.com/install/linux/linux-postinstall/)) + +ではいよいよHello Worldだ。いざ + +```shell +$ docker run hello-world +``` + +なんか色々英語で出てきたと思う。正常に実行されたならば、以下のようなメッセージが表示されたはずだ。 + +``` +Hello from Docker! +This message shows that your installation appears to be working correctly. + +To generate this message, Docker took the following steps: + 1. The Docker client contacted the Docker daemon. + 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. + (amd64) + 3. The Docker daemon created a new container from that image which runs the + executable that produces the output you are currently reading. + 4. The Docker daemon streamed that output to the Docker client, which sent it + to your terminal. + +To try something more ambitious, you can run an Ubuntu container with: + $ docker run -it ubuntu bash + +Share images, automate workflows, and more with a free Docker ID: + https://hub.docker.com/ + +For more examples and ideas, visit: + https://docs.docker.com/get-started/ +``` + +🎉 + +## もうちょっと役に立つことをする + +下のコマンドを入力してほしい。 + +```shell +$ docker run -p 8080:80 nginx +``` + +なんだかダウンロードが始まるので、しばらく待つ。 + +下のようなメッセージが表示されたら、ブラウザで[http://localhost:8080](http://localhost:8080)を開いてみよう。 + +``` +Status: Downloaded newer image for nginx:latest +``` + +ブラウザから、以下のようにnginxが起動している様子が見えると思う。 + +![nginx](assets/nginx.png) + +このように、なんの環境構築をすることもなく、Webサーバーが構築できてしまった。これが先に述べた「環境を共有する」ということだ。 From 3cb3de1d2bd3ae5831b525bdcf46f2bb4d8af4b0 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 22:41:10 +0900 Subject: [PATCH 05/18] Add: Add a notice aboud command notation in intro page --- docs/lecture/introducing-docker/0-index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/lecture/introducing-docker/0-index.md b/docs/lecture/introducing-docker/0-index.md index fcbc608..48aa446 100644 --- a/docs/lecture/introducing-docker/0-index.md +++ b/docs/lecture/introducing-docker/0-index.md @@ -34,6 +34,11 @@ - ソフトウェア: 主にユーザーと直接のインタラクションなしで動くようなソフトウェア([MySQL](https://www.mysql.com/jp/)、[nginx](https://nginx.org/ja/)など) - ライブラリ: 共有ライブラリ。([glibc](https://www.gnu.org/s/libc/)など) + +## 表記について + +- `$ command`: $から始まるコードブロックは、コマンドラインを示している。Windowsならcmd.exeやpowershell、macOSならTerminal.appやiTerm2、GNU/Linuxなら好きなターミナルで、`$`から後の部分を打ち込む。 + ## 次 [Dockerとは?](1-what-is-docker.md) From 38508c110290a61d629c38c31dde841fbb00e0d4 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Fri, 15 Mar 2019 23:26:36 +0900 Subject: [PATCH 06/18] Add: Add missing nginx image --- .../introducing-docker/assets/nginx.png | Bin 0 -> 121373 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/lecture/introducing-docker/assets/nginx.png diff --git a/docs/lecture/introducing-docker/assets/nginx.png b/docs/lecture/introducing-docker/assets/nginx.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7334682b4cc475a3bd29746904d8a8b7014529 GIT binary patch literal 121373 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

fm*7~$JPByMytkT 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 R595LVDJy8m=Ug%g_ Date: Fri, 15 Mar 2019 23:35:30 +0900 Subject: [PATCH 07/18] [WIP] Add: Add a post about concepts of docker --- SUMMARY.md | 1 + .../introducing-docker/3-docker-concepts.md | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 docs/lecture/introducing-docker/3-docker-concepts.md diff --git a/SUMMARY.md b/SUMMARY.md index 2ed657b..7055f29 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -8,4 +8,5 @@ * [Docker](docs/lecture/introducing-docker/0-index.md) * [Dockerとは?](docs/lecture/introducing-docker/1-what-is-docker.md) * [Dockerを使う](docs/lecture/introducing-docker/2-use-docker.md) + * [Dockerの概念](docs/lecture/introducing-docker/3-docker-concepts.md) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md new file mode 100644 index 0000000..c954f08 --- /dev/null +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -0,0 +1,21 @@ +# Dockerの概念 + +さてここまで色々やってきたわけだが、ここでは今までやってきたことがどういった操作だったのかについて詳しく説明する。 + +とりわけ以下のようなDocker特有の概念について、今までやったことと対応づけながら説明していく。 + +- イメージ(image) +- コンテナ(container) +- レイヤー(layer) + +## イメージ(image) + +イメージとは、今までこの記事で「環境」と呼んでいたものそのものだ。 +ソフトウェアを動作させるために必要なファイル群をまとめたもの、とも言える。 +なお一般的にイメージというと色々な意味があるので、「Dockerイメージ」と呼ばれることが多い。 + +最初に`docker run`を実行した時、なんだかダウンロードが始まったと思うが、あれはイメージをダウンロードしている。 + +## コンテナ(container) + +TBD From 3d606b6afc91efe73a1e8cab0b70fcafb3e2e058 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:31:02 +0900 Subject: [PATCH 08/18] Add: Add explanation of images and containers --- .../introducing-docker/3-docker-concepts.md | 193 +++++++++++++++++- 1 file changed, 192 insertions(+), 1 deletion(-) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index c954f08..99681c3 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -15,7 +15,198 @@ なお一般的にイメージというと色々な意味があるので、「Dockerイメージ」と呼ばれることが多い。 最初に`docker run`を実行した時、なんだかダウンロードが始まったと思うが、あれはイメージをダウンロードしている。 +イメージはソフトウェアを実行するために必要なものを全て同梱しているため、容量が大きくなることが多い。(とはいえ普通は1GBを超えない程度だ) + +全てのイメージには一意なIDが振られている。イメージを変更することはできず(read only)、変更を加えるときは別のIDを持ったイメージを再度作成することになる。(gitのコミットハッシュをイメージしてほしい) + +また、IDに対して"タグ"をつけることができる。これは特定のIDにわかりやすく目印をつけるためのものである。(gitのタグと同じようなもの) + +### イメージを作ってみる + +イメージは`Dockerfile`という名前のファイルから、`docker image build`コマンドで作成することができる。 + +{% hint style='info' %} +わかりやすさのために`docker image build`を使用しているが、[`docker build`](https://docs.docker.com/engine/reference/commandline/build/)と同義である。 +{% endhint %} + +`Dockerfile`はいわば"イメージの設計図"で、そこにはどうやってイメージを作成するか、指示を書いていく。 + +ここでは例として、「[`cowsay`というジョークプログラム](https://ja.wikipedia.org/wiki/Cowsay)を実行して牛の絵を表示するDockerイメージ」を作ってみる。 + +結論からいうとこんな感じだ。 + +```dockerfile +FROM ubuntu:18.10 + +RUN apt-get update -y +RUN apt-get install -y cowsay + +CMD ["/usr/games/cowsay", "This is working!"] +``` + +一行づつ説明していく。 + +#### `FROM`コマンド + +これは、これからイメージを組み立てていく上で「既存のイメージをベースにするよ」というコマンドだ。 +ここでは`ubuntu:18.10`と書いてある。これは「`ubuntu`イメージの`18.10`というタグを使う」という意味だ。 + +#### `RUN`コマンド + +このコマンドに渡した文字列(ここでは`apt-get update -y`など)は、コマンドと解釈され、構築中のイメージの中で実行される[^1]。 + +ubuntuユーザーにとってはおなじみのコマンドで、`cowsay`をインストールしているのがわかると思う。 + +{% hint style='tip' %} +コマンドは`/bin/sh`で走るので、`&&`や`>`などは動く。 +{% endhint %} + +[^1]: 正確にはビルド時に生成される一時コンテナの中で実行される + +#### `CMD`コマンド + +`CMD`では、イメージが実行される時に[^2]実行するコマンドを指定する。 + +ここでは`/usr/games/cowsay`というプログラムに、`This is working!`という文字列を渡している。すなわちcowsayで「This is working!」と表示するコマンドというわけだ。 + +{% hint style='tip' %} +ご覧の通り配列形式で指定しているが、実はこれは下のように書いても動く。 + +```dockerfile +CMD /usr/bin/cowsay "This is working!" +``` + +だが、配列形式ではなくシェル形式(上の書き方)で書いた場合`/bin/sh`を経由して実行することになる。さらに引数の明示性の観点からも、`CMD`では配列形式が好まれる。 +{% endhint %} + +[^1]: 正確にはイメージから生成されたコンテナが実行される時 + +#### イメージをビルドする + +というわけで、イメージをビルドしよう。 + +`Dockerfile`が存在するディレクトリで、以下のコマンドを実行する。 + +```shell +$ docker image build . -t example-image +<色々ログが流れる> +Successfully tagged example-image:latest +``` + +[docker image build | Docker documentation](https://docs.docker.com/engine/reference/commandline/image_build/) + +これでイメージが生成できた。 + +なおここでは`-t`で名前として`example-image`を指定しているため、以降このイメージは`example-image`として参照できることになる。 + +実際にイメージが生成できているのか確認してみよう。 + +```shell +$ docker image ls +REPOSITORY TAG IMAGE ID CREATED SIZE +example-image latest f839d43061a3 38 minutes ago 138MB +``` + +[docker image ls | Docker documentation](https://docs.docker.com/engine/reference/commandline/image_ls/) + +{% hint style='info' %} +わかりやすさのために`docker image ls`を使用しているが、[`docker images`](https://docs.docker.com/engine/reference/commandline/images/)と同義である。 +{% endhint %} + +このように、先ほど生成したイメージの情報が表示される。なおタグはデフォルトで`latest`になっている。 + +次はもう一つの重要な概念、"コンテナ"について説明する。 ## コンテナ(container) -TBD +コンテナは、実際にDockerを使ってソフトウェアを実行する際に作られる隔離環境のことだ。 +コンテナの中からはコンテナは独立したシステムであるように見える。実際コンテナはホストのシステムとはある程度隔離されており、例えば + +- ディレクトリ + - 例: ルート`/`が独立して存在している +- プロセス + - 例: PID0 (init)が独立して存在している +- ユーザー + - 例: ルートユーザー`root`が独立して存在している + +がホストから独立している。(他にも色々あるので気になる人は"linux namespace"や"cgroups"で検索) + +これにより、(基本的に)コンテナ内部から外のシステムにはアクセスできないようになっている。(そもそも内部からは外の存在すらわからない) + +また、コンテナは揮発性を持つと言える。コンテナの中でファイルを変更することはできるが、コンテナの削除の際にその変更はなかったことになる。永続化するには、後述する方法でイメージにするしかない。 + +コンテナは2つの状態を持っている。「実行中」と「停止中」だ。 + +### コンテナを作成/実行してみる + +コンテナはイメージから作成する。 +ここでは先ほど作成した`example-image`からコンテナを作ってみる。次のコマンドを実行してみよう。 + +```shell +$ docker container create exmaple-image +<コンテナIDが出力される> +``` + +[docker container create | Docker documentation](https://docs.docker.com/engine/reference/commandline/container_create/) + +{% hint style='info' %} +わかりやすさのために`docker container create`を使用しているが、[`docker create`](https://docs.docker.com/engine/reference/commandline/create/)と同義である。 +{% endhint %} + +これで`example-image`からコンテナを作成できた。 + +`0fa275c5b6c0c983de67dfb4c2ea91fd8ec38365a9c9a99ae28307aefe189386`のような文字列が出力されたと思う。これが作成されたコンテナの"コンテナID"だ。 + +実際に作成できたのかどうか、以下のコマンドで確かめよう。 + +```shell +$ docker container ls --all +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +0fa275c5b6c0 example-image "/usr/games/cowsay '…" 18 seconds ago Created dreamy_bardeen +``` + +[docker container ls | Docker documentation](https://docs.docker.com/engine/reference/commandline/container_ls/) + +{% hint style='info' %} +わかりやすさのために`docker container ls`を使用しているが、[`docker ps`](https://docs.docker.com/engine/reference/commandline/ps/)と同義である。 +{% endhint %} + +{% hint style='tip' %} +`NAMES`に書いてある文字列(ここでは`dreamy_bardeen`)は、コンテナの"名前"である。コンテナIDは覚えにくい(それはそう!)ため、覚えやすい名前がコンテナ作成時に自動的に付与される。 +名前はコンテナIDの代わりに使うことができる。コンテナ作成時に自分で名前をつけることもできる。(`--name`オプション) +{% endhint %} + +では作成したコンテナを実行しよう。 + +```shell +$ docker container start --attach <コンテナID/名前> + __________________ +< This is working! > + ------------------ + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || +``` + +このようにイメージ作成時に`CMD`に指定したコマンドが実行されたことが確認できると思う。 + +## イメージとコンテナの関係 + +このようにコンテナはイメージから作るわけだが、実はイメージはコンテナから作ることもできる。[^3] + +[^3]: 注意深くログを見ればわかるが、`docker image build`も、結局は一時コンテナを作ってイメージを再生成しているのだ + +とはいえ手動でコンテナからイメージを作ることはほとんどないので、とりあえず現時点では + +- イメージ: 永続的で不変な環境。配布できる。ファイルのようなもの +- コンテナ: 揮発的な環境。実行できる。プロセスとメモリのようなもの + +と思ってもらえればOKだ。 + +### `docker run` + +前々から出てきている`docker run`コマンド、これは「イメージからコンテナを作成し、それを実行」ということをやっている。 + +すなわち`docker container create`と`docker container start`を一緒にやってくれている。便利なのでよく使われる。 From fc578b5581b4d376586957135731d5ea2a8099d7 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:31:36 +0900 Subject: [PATCH 09/18] Add: Add hints plugin --- book.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/book.json b/book.json index 2827682..1be58be 100644 --- a/book.json +++ b/book.json @@ -1,3 +1,4 @@ { - "language": "ja" + "language": "ja", + "plugins": ["hints"] } From 987a0036b9750fd486e52780b0f8bb54eae1db02 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:38:37 +0900 Subject: [PATCH 10/18] Add: Add a short explanation of registry --- .../introducing-docker/3-docker-concepts.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index 99681c3..1b3859a 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -6,7 +6,7 @@ - イメージ(image) - コンテナ(container) -- レイヤー(layer) +- レジストリ(registry) ## イメージ(image) @@ -210,3 +210,15 @@ $ docker container start --attach <コンテナID/名前> 前々から出てきている`docker run`コマンド、これは「イメージからコンテナを作成し、それを実行」ということをやっている。 すなわち`docker container create`と`docker container start`を一緒にやってくれている。便利なのでよく使われる。 + +## レジストリ (registry) + +レジストリは、Dockerイメージを保持し、共有するシステムだ。 +一般的にインターネット上にサービスとして存在し、そこと通信することで利用する。 + +今まで使ってきた`nginx`や`ubuntu`のイメージは全てレジストリ上にあり、そこから取得していたのだ。(だからダウンロードが必要だった) + +デフォルトのレジストリは[Docker Hub](https://hub.docker.com/)であり、特に指定しない場合はここが使われる。 +他にも[quay.io](https://quay.io/)のようなレジストリサービスが存在しているほか、自分でレジストリを立てることもできる。 + +`docker image push`、`docker image pull`でそれぞれレジストリにイメージをアップロード、ダウンロードできるが、ここでは扱わない。詳しくは参考文献を参照してほしい。 From cc952906e9ece2354b3ab140c517984ba752477a Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:40:12 +0900 Subject: [PATCH 11/18] Add: Link to the corresponding headings --- docs/lecture/introducing-docker/3-docker-concepts.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index 1b3859a..8500931 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -4,9 +4,9 @@ とりわけ以下のようなDocker特有の概念について、今までやったことと対応づけながら説明していく。 -- イメージ(image) -- コンテナ(container) -- レジストリ(registry) +- [イメージ(image)](#イメージimage) +- [コンテナ(container)](#コンテナcontainer) +- [レジストリ(registry)](#レジストリregistry) ## イメージ(image) @@ -211,7 +211,7 @@ $ docker container start --attach <コンテナID/名前> すなわち`docker container create`と`docker container start`を一緒にやってくれている。便利なのでよく使われる。 -## レジストリ (registry) +## レジストリ(registry) レジストリは、Dockerイメージを保持し、共有するシステムだ。 一般的にインターネット上にサービスとして存在し、そこと通信することで利用する。 From c117257922b8804f435a3596c21ff7a4675ebd92 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:40:41 +0900 Subject: [PATCH 12/18] Fix: Fix words --- docs/lecture/introducing-docker/3-docker-concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index 8500931..95334e7 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -2,7 +2,7 @@ さてここまで色々やってきたわけだが、ここでは今までやってきたことがどういった操作だったのかについて詳しく説明する。 -とりわけ以下のようなDocker特有の概念について、今までやったことと対応づけながら説明していく。 +とりわけ以下のようなDocker特有の概念について、実例を交えながら説明していく。 - [イメージ(image)](#イメージimage) - [コンテナ(container)](#コンテナcontainer) From 5929857d6567f7ccdf1188fce1723a8f94ecd386 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:53:59 +0900 Subject: [PATCH 13/18] Add: Add conclusion document --- SUMMARY.md | 1 + docs/lecture/introducing-docker/4-conclusion.md | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 docs/lecture/introducing-docker/4-conclusion.md diff --git a/SUMMARY.md b/SUMMARY.md index 7055f29..92f3884 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -9,4 +9,5 @@ * [Dockerとは?](docs/lecture/introducing-docker/1-what-is-docker.md) * [Dockerを使う](docs/lecture/introducing-docker/2-use-docker.md) * [Dockerの概念](docs/lecture/introducing-docker/3-docker-concepts.md) + * [Dockerまとめ・参考文献](docs/lecture/introducing-docker/4-conclusion.md) diff --git a/docs/lecture/introducing-docker/4-conclusion.md b/docs/lecture/introducing-docker/4-conclusion.md new file mode 100644 index 0000000..59109fc --- /dev/null +++ b/docs/lecture/introducing-docker/4-conclusion.md @@ -0,0 +1,17 @@ +# まとめ + +この記事では、Dockerの利点と使用方法、重要な概念について説明した。 + +現時点ではまだDockerの恩恵を感じきれていないと思う。そこで、この記事を読んでくれた皆さんにはこれから積極的にDockerを使ってもらいたいと思っている。 + +またSakutenDevでは、開発環境・デプロイ環境どちらでも大いにDockerを活用している。是非これを機にコードをのぞいてみてほしい。 + +長くなってしまいましたが、最後まで読んでいただきありがとうございます。 + +## 参考文献 / further reading + +- [Docker Documentation](https://docs.docker.com/) +- [Docker ドキュメント日本語化プロジェクト](http://docs.docker.jp/) +- [Dockerfile reference | Docker documentation](https://docs.docker.com/engine/reference/builder/) +- [docker container / image コマンド新旧比較 - Qiita](https://qiita.com/zembutsu/items/6e1ad18f0d548ce6c266) +- [Docker内部で利用されているLinuxカーネルの機能 (namespace/cgroups)](https://qiita.com/wellflat/items/7d62f2a63e9fcddb31cc) From a17668ef54be456d6702b3bb5d0e8e2f15434872 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:55:41 +0900 Subject: [PATCH 14/18] Fix: Fix further reading link --- docs/lecture/introducing-docker/0-index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/lecture/introducing-docker/0-index.md b/docs/lecture/introducing-docker/0-index.md index 48aa446..3f0d326 100644 --- a/docs/lecture/introducing-docker/0-index.md +++ b/docs/lecture/introducing-docker/0-index.md @@ -11,7 +11,7 @@ - 各種概念(イメージ、コンテナなど)について - 使用方法 -について解説する。なおここでは以下の点には触れないため、各自[参考書籍](#further-reading)を別途参照されたし。 +について解説する。なおここでは以下の点には触れないため、各自[参考文献](./4-conclusion.html#参考文献--further-reading)を別途参照されたし。 - Docker内部の仕組み(cgroups、コンテナランタイムなど) - 発展的な利用(マルチアーキテクチャ、マルチステージビルドなど) From 87f1b43d8cf6bdf6d219dbe2ea12d99ca8d33220 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 12:56:57 +0900 Subject: [PATCH 15/18] Add: Add notation notice --- docs/lecture/introducing-docker/0-index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/lecture/introducing-docker/0-index.md b/docs/lecture/introducing-docker/0-index.md index 3f0d326..0c4ceb6 100644 --- a/docs/lecture/introducing-docker/0-index.md +++ b/docs/lecture/introducing-docker/0-index.md @@ -38,6 +38,7 @@ ## 表記について - `$ command`: $から始まるコードブロックは、コマンドラインを示している。Windowsならcmd.exeやpowershell、macOSならTerminal.appやiTerm2、GNU/Linuxなら好きなターミナルで、`$`から後の部分を打ち込む。 +- `< something >`: そのまま入力するのではなく、適宜読み替えてほしい ## 次 From 07166bf40a6f25c0ca531875daeff5e4c65b779b Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 13:05:38 +0900 Subject: [PATCH 16/18] Add: Add more hints --- .../introducing-docker/1-what-is-docker.md | 2 ++ .../introducing-docker/2-use-docker.md | 8 +++++++- .../introducing-docker/3-docker-concepts.md | 19 ++++++++++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docs/lecture/introducing-docker/1-what-is-docker.md b/docs/lecture/introducing-docker/1-what-is-docker.md index 19923dd..b1de0a6 100644 --- a/docs/lecture/introducing-docker/1-what-is-docker.md +++ b/docs/lecture/introducing-docker/1-what-is-docker.md @@ -16,6 +16,7 @@ (以下、このシステムを「システムS」と呼ぶことにする) +{% hint style='info' %} 具体的に考えたければ、 - システムS → Webアプリケーションのバックエンド @@ -26,6 +27,7 @@ - ソフトウェアE → 管理コントロールパネルアプリ と置き換えるとイメージが湧きやすいと思う。 +{% endhint %} ## 何が嬉しいのか diff --git a/docs/lecture/introducing-docker/2-use-docker.md b/docs/lecture/introducing-docker/2-use-docker.md index 02b9c83..f2fbf42 100644 --- a/docs/lecture/introducing-docker/2-use-docker.md +++ b/docs/lecture/introducing-docker/2-use-docker.md @@ -15,7 +15,9 @@ Docker CEは無料で利用できる。 インストール方法は本当によく変わるので、英語が読める人は[公式ドキュメント](https://docs.docker.com/install/)を読むのがいいと思う。 +{% hint style='info' %} あまり私の所有していないプラットフォームでのインストール方法については自信がないので、あえて抽象的な説明にとどめておく。ごめんなさい。わからなかったら気軽にDiscordなどで質問してください。 +{% endhint %} ### macOSの人 @@ -45,7 +47,11 @@ Microsoft Windows 10 64-bitのProfessionalまたはEnterpriseが必要。 $ docker -v ``` -バージョンが出てきたと思う。(GNU/Linuxユーザーで権限がどうとか言われた場合は[これをみて](https://docs.docker.com/install/linux/linux-postinstall/)) +バージョンが出てきたと思う。 + +{% hint style='tip' %} +GNU/Linuxユーザーで権限がどうとか言われた場合は[これをみて](https://docs.docker.com/install/linux/linux-postinstall/) +{% endhint %} ではいよいよHello Worldだ。いざ diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index 95334e7..1f69ed9 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -17,9 +17,13 @@ 最初に`docker run`を実行した時、なんだかダウンロードが始まったと思うが、あれはイメージをダウンロードしている。 イメージはソフトウェアを実行するために必要なものを全て同梱しているため、容量が大きくなることが多い。(とはいえ普通は1GBを超えない程度だ) -全てのイメージには一意なIDが振られている。イメージを変更することはできず(read only)、変更を加えるときは別のIDを持ったイメージを再度作成することになる。(gitのコミットハッシュをイメージしてほしい) +全てのイメージには一意なIDが振られている。イメージを変更することはできず(read only)、変更を加えるときは別のIDを持ったイメージを再度作成することになる。 -また、IDに対して"タグ"をつけることができる。これは特定のIDにわかりやすく目印をつけるためのものである。(gitのタグと同じようなもの) +また、IDに対して"タグ"をつけることができる。これは特定のIDにわかりやすく目印をつけるためのものである。 + +{% hint style='tip' %} +イメージIDはgitのコミットハッシュ、タグはgitのタグをイメージしてほしい +{% endhint %} ### イメージを作ってみる @@ -129,7 +133,12 @@ example-image latest f839d43061a3 38 minutes ago - ユーザー - 例: ルートユーザー`root`が独立して存在している -がホストから独立している。(他にも色々あるので気になる人は"linux namespace"や"cgroups"で検索) +がホストから独立している。 + +{% hint style='tip' %} +他にも色々あるので気になる人は"linux namespace"や"cgroups"で検索 +{% endhint %} + これにより、(基本的に)コンテナ内部から外のシステムにはアクセスできないようになっている。(そもそも内部からは外の存在すらわからない) @@ -192,6 +201,10 @@ $ docker container start --attach <コンテナID/名前> このようにイメージ作成時に`CMD`に指定したコマンドが実行されたことが確認できると思う。 +{% hint style='tip' %} +`--attach`オプションは、stdin/stdoutをホストのものと繋げるためにつけている。 +{% endhint %} + ## イメージとコンテナの関係 このようにコンテナはイメージから作るわけだが、実はイメージはコンテナから作ることもできる。[^3] From eb56aad5f6e83b5b14bf74edf2470c8ed1bde624 Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 13:05:46 +0900 Subject: [PATCH 17/18] Add: Add a link showing next post --- docs/lecture/introducing-docker/1-what-is-docker.md | 2 ++ docs/lecture/introducing-docker/2-use-docker.md | 4 ++++ docs/lecture/introducing-docker/3-docker-concepts.md | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/docs/lecture/introducing-docker/1-what-is-docker.md b/docs/lecture/introducing-docker/1-what-is-docker.md index b1de0a6..9560ee0 100644 --- a/docs/lecture/introducing-docker/1-what-is-docker.md +++ b/docs/lecture/introducing-docker/1-what-is-docker.md @@ -55,6 +55,8 @@ Dockerがこれらの仮想化ソフトウェアと違う点は、OS(正確に Webアプリケーションなどの複雑なシステムでは、環境の一部を変更しただけでシステム全体の障害につながるということが簡単に起こりうる。Dockerの用意する「環境」は、それ自体不変のもので、変更を加えても容易に以前の状態に戻すことができる。これにより障害に対する対応が簡単になったり、開発の際にトライアンドエラーで試すといったような際の効率が圧倒的に上がったりする。(この辺りは試した方がよくわかると思うので、今は「ふーんそうなんだ」程度に思ってもらえれば構わない) +## 次 + 次章では、実際に手を動かしながらこれらの利点について体験してもらうと共に、Dockerを構成する基本概念について説明する。 [Dockerを使う](2-use-docker.md) diff --git a/docs/lecture/introducing-docker/2-use-docker.md b/docs/lecture/introducing-docker/2-use-docker.md index f2fbf42..d25e199 100644 --- a/docs/lecture/introducing-docker/2-use-docker.md +++ b/docs/lecture/introducing-docker/2-use-docker.md @@ -107,3 +107,7 @@ Status: Downloaded newer image for nginx:latest ![nginx](assets/nginx.png) このように、なんの環境構築をすることもなく、Webサーバーが構築できてしまった。これが先に述べた「環境を共有する」ということだ。 + +## 次 + +[Dockerの概念](3-docker-concepts.md) diff --git a/docs/lecture/introducing-docker/3-docker-concepts.md b/docs/lecture/introducing-docker/3-docker-concepts.md index 1f69ed9..952d40b 100644 --- a/docs/lecture/introducing-docker/3-docker-concepts.md +++ b/docs/lecture/introducing-docker/3-docker-concepts.md @@ -235,3 +235,7 @@ $ docker container start --attach <コンテナID/名前> 他にも[quay.io](https://quay.io/)のようなレジストリサービスが存在しているほか、自分でレジストリを立てることもできる。 `docker image push`、`docker image pull`でそれぞれレジストリにイメージをアップロード、ダウンロードできるが、ここでは扱わない。詳しくは参考文献を参照してほしい。 + +## 次 + +[まとめ](4-conclusion.md) From 704fbc671c27e4fb9ea8f8ad8f53b4e663bee3cd Mon Sep 17 00:00:00 2001 From: "coord.e" Date: Sun, 17 Mar 2019 13:13:16 +0900 Subject: [PATCH 18/18] Fix: Run `gitbook install` on `yarn install` --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 42f4868..132436b 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "gitbook-cli": "^2.3.2" }, "scripts": { - "start": "yarn gitbook serve" + "start": "yarn gitbook serve", + "prepublish": "gitbook install" } }