Dockerの基礎を初心者向けに徹底解説!元ぼっち大学生のフリーランスエンジニアがおすすめの本を紹介しつつ詳しく説明します
プログラミングの学習に興味があったり、実際に学習を始めてはみたものの、何から勉強するべきか分からないというぼっち大学生のみなさん!今回は元大学ぼっち&フリーランスエンジニアの僕が、プログラミング初心者のみなさんに向けて、学んでおいて絶対に損はないDockerという技術について、分かりやすく解説してみましたので、興味のあるプログラミング初学者のぼっち大学生はぜひご一読ください。
たっちゃん
ぼっちユニバーシティの運営者です。
大学ぼっち時代にプログラミングを学び始め、在学中にフリーランスのWebエンジニアとして独立。
本業はWebアプリケーションやWebサイトの受託開発がメインですが、最近はFlutterにハマっています。
趣味はバックパッカー旅行と立ち飲み屋さん巡り。
現在は都内でひとり法人を経営しながら、現役のぼっち大学生のみなさんへお役立ち情報を発信しています。
0. はじめに:なぜプログラミング初心者にDockerを学ぶことをおすすめするのか?
ぼっち大学生のみなさんこんにちは!
今回は、プログラミングの学習に興味があったり、実際にプログラミングの学習をスタートしている初学者のぼっち大学生のみなさんのために、学んでおいて絶対に損は無い「Docker(ドッカー)」という技術について、できるだけ分かりやすく解説してみようと思います。
今回紹介するDockerは、国内外の多くのWeb系企業で、主に開発環境を構築してエンジニア間で共有するような場合に使用される大変便利な技術でして、もはや開発現場におけるデファクトスタンダードであると言っても過言では無い代物。
それゆえ、これからプログラミングを学んでいく大学ぼっちなみなさんが、Dockerの原理原則をちょっとでも理解しておくということは、今後のプログラミング学習において絶対に役立つはず。
この記事の内容や後半に紹介するおすすめの書籍を通じて、この機会にプログラミングの学習をスタートしたぼっち大学生のみなさんは、Dockerについての理解を少しでも深めていきましょう!
1. Dockerとは?仕組みやコンテナの役割について初心者でも簡単に理解できるように説明します
お待たせしました!
早速ですが、これよりDockerとはどのような技術なのか、プログラミング初心者のぼっち大学生でも一発で理解できるように説明させていただきます。
1-1. 僕のパソコンで作成したプログラムをぼっち大学生のみなさんのパソコンでも同じように動かせますか?
先に結論からお伝えしておくと、Dockerを使うことによって、僕が書いたプログラムが、読者のぼっち大学生のみなさんのパソコンでも同じように動作するようになるのです!
…同じパソコンなんだから、そんなの当たり前じゃないかと思ったぼっち大学生のみなさん。
残念ですが、そう簡単には上手くいかないのがプログラミングなのです。
例えば、僕が巷で人気のプログラミング言語のひとつであるPythonを使って、とあるゲームを作ったとしましょう。
無論、このゲームは僕のパソコンを使って作成したので、僕のパソコンでは問題無く動作することが確認できています。
しかし、このゲームをぼっち大学生のみなさんのパソコンでも動かそうと思ったときに、そこにPythonがインストールされていなかったとしたらどうでしょうか?
おそらく、僕が作ったゲームのプログラムが、
「キミのパソコンにPythonが入ってないからちゃんとインストールしてね?」
といったようなエラーを吐いて、そもそもゲームが動作しないような事態に陥るのがオチです。
そう、ここでPythonがインストールされていないぼっち大学生のみなさんのパソコンでも、僕が作ったゲームが正常に動作するようにできるのが、今回紹介するDockerという技術なのです!
1-2. Dockerはあるプログラムを異なる条件下で簡単に動かすための魔法の箱を用意してくれる技術
Dockerがどのような問題を解決するための技術なのかということについて、簡単に説明させていただきました。
ここからは、プログラミングを学び始めたぼっち大学生のみなさんが、このDockerという技術をより具体的に理解しやすくなるようなお話をさせていただきます。
いきなりですが、プログラミング初心者のぼっち大学生のみなさんは、Dockerはプログラムをすごく簡単に動かせる魔法の箱を提供してくれる技術というイメージを持ってください!
なぜならば、これは繰り返しにはなりますが、Dockerの魔法の箱にぼっち大学生のみなさんが書いたプログラムを入れさえすれば、僕のパソコンだけでなく、キャンパスで見かける気になるあの子のパソコンでも、みなさんのプログラムを、全く同じ条件下で動かせるようになるからです。
今度の例は、ぼっち大学生のみなさんがPython 3を使用して、ご自分のポートフォリオとなるWebサイトを構築してみたことにしましょう。
しかし、試験期間に突入して忙しくなったぼっち大学生のみなさんは、僕のところに機能の追加実装を依頼してきたと仮定します。
僕のパソコンにはPythonが入っているのですが、なぜかぼっち大学生のみなさんが構築したWebサイトのプログラムを動かそうとしても、僕のパソコンではどういう訳か上手く動作しません。
どうやら、僕のパソコンにはPythonがインストールされているものの、そのPythonはみなさんのパソコンにインストールされている3系ではなく、それよりも古い2系のものであることが、そもそもWebサイトが動作してくれない原因のようです…残念。
しかし、このようなバージョンの差異が招いた悲惨な状況においても、Dockerをきちんと使いさえすれば、僕のパソコンでぼっち大学生のみなさんが作成したWebサイトのプログラムを動作させることは可能です。
なぜなら、Dockerはあるプログラムが必要とするものを、ひとつ残らずコンテナと呼ばれる魔法の箱に詰め込んで、そのプログラムが他のコンピューターでもちゃんと動くようにしてくれるからです!
そして、Dockerはそのコンテナという魔法の箱を、ぼっち大学生のみなさんと僕の間で簡単に共有できるようにしてくれているので、みなさんが作ったWebサイトのプログラムを、僕のパソコンでも正しく動作させるということが、いとも簡単に実現できるのです。
ここまでの説明で、Dockerは異なる条件下であるプログラムの動作を保証する魔法の箱を提供してくれる技術であるということが、プログラミング初学者であるぼっち大学生のみなさんにもご理解いただけたのではないでしょうか?
2. Docker Composeとは?仕組みや使い方について初心者でも簡単に分かるように説明します
ここまでで、プログラミングを学び始めたぼっち大学生に向けて、Dockerがコンテナと呼ばれる魔法の箱を提供してくれる便利な技術であるということについて、簡単な例を添えて説明させていただきました。
続いては、このDockerコンテナをもっと便利に活用するためのスゴい仕組み、その名も「Docker Compose(ドッカー・コンポーズ)」について解説させていただきます!
早速ですが、Docker Composeを一言で説明するならば、
「いくつものコンテナに入っているプログラムを、一度に簡単に動かすことができる仕組み」
ということになります。
例えば、ぼっち大学生のみなさんが、王様の命令通りに職人たちがお城を作るゲームのプログラムを書いたとしましょう。
そのゲームには、お城の建設を命じる王様と、お城を建てる職人たちという少なくとも2種類のキャラクターが登場するはず。
そのため、ぼっち大学生のみなさんは、命令をする王様のプログラムと、王様の命令通りに働く職人のプログラムという、2つの別々なプログラムを作成しています。
それぞれのプログラムは、Dockerのコンテナに入れることによって、みなさんのパソコンでも僕のパソコンでも、同じように動作させることができるということは、この記事の前半で説明した通り。
そして、このDocker Composeという技術を使えば、ぼっち大学生のみなさんが書いた王様と職人の2種類のプログラムを、一度に動作させることができるのです!
では、どうやってDocker Composeを使うのでしょうか?
このDocker Composeを使うためには、
- Dockerfile
- docker-compose.yml
という2つのファイルが必要になります。
説明を分かりやすくするために、ここではこれらのファイルを「魔法の紙」とでも呼びましょう!
まず「Dockerfile」は、ある1つのプログラムを動かすための魔法の紙です。
これにはプログラムを動かすために必要なものや、どうやって動かすかということが書かれています。
例えば、王様に関するDockerfileは、王様を動かすために必要な素材や、王様を動かす方法などが書かれているということ。
続いて「docker-compose.yml」は、いくつものプログラムを一度に動かすための魔法の紙に相当します。
これには、どのプログラムがどのように動くのかが書かれています。
例えば、王様と職人たちに関するdocker-compose.ymlは、それぞれのプログラムがどのように一緒に動くのかが書かれているということ。
つまり、Docker Composeを使うと、複数の魔法の箱 = コンテナに入っているそれぞれのプログラムを、一度に超簡単に動かせるのです!
3. 超初心者向けチュートリアル!DockerとDocker Composeを実際に使ってみよう
Docker Composeの便利さは上手く伝わりましたでしょうか?
最後は、DockerもといDocker Composeを使って、実際にプログラムを動かしてみるチュートリアルをやってみよう!のコーナーです。
ぼっち大学生のみなさんには、先ほど登場した魔法の紙、
- Dockerfile
- docker-compose.yml
を実際に作成していただき、Python製の超簡単なプログラムを実行してもらいますので、ここらでぜひ気合を入れて取り組んでみてくださいね。
3-1. 手順1:DockerとDocker Composeをインストールしよう
まずはぼっち大学生のみなさんのパソコンに、DockerとDocker Composeをインストールしていただきます。
記事の執筆時点では、こちらのDocker公式ページからインストールすることができますので、お使いのパソコンのOSに応じて、Docker for MacやDocker for Windowsのインストール作業を実施してください。
インストールが無事に完了したら、パソコンのターミナル(コマンドプロンプト)を開いていただき、下記の2つのコマンドを実行してみましょう。
docker -v
Docker version 20.10.23, build ???????
docker-compose -v
Docker Compose version v2.15.1
こんな感じで、DockerとDocker Composeのバージョンが表示されたら、インストール作業は成功です。
お疲れ様でした!
3-2. 手順2:プロジェクトフォルダを作ろう
続いては、「my-game」という名前のフォルダを作っていきましょう。
mkdir my-game
これが、今回のプロジェクトフォルダに相当します。
3-3. 手順3:魔法の紙「Dockerfile」を作ろう
先ほど作成した「my-game」フォルダの中に、1つ目の魔法の紙 = 「Dockerfile」を作成していきます!
cd my-game
touch Dockerfile
touch コマンドで空のDockerfileを作成したら、お好きなエディターでDockerfileを開いていただき、下記の内容を記述して保存してください。
// Dockerfile
FROM python:3.9
WORKDIR /my-game
COPY . .
CMD ["python", "game.py"]
これにて、今回作成するプログラムを動かすために必要なものや、その動かし方などが書かれた魔法の紙、Dockerfileの完成です!
この魔法の紙に書いてある内容を少し説明すると、
「Python 3.9を使って、「/my-game」というフォルダを作り、そこで「game.py」のプログラムを実行するよ!」
って感じになります。
3-4. 手順4:魔法の紙「docker-compose.yml」を作ろう
続いては、もうひとつの魔法の紙である「docker-compose.yml」のファイルを、「my-game」フォルダの中に作っていきましょう。
touch docker-compose.yml
そして、「docker-compose.yml」には、次のような魔法の言葉を書いて保存します。
// docker-compose.yml
version: "3.9"
services:
game:
build: .
container_name: my_game_container
これで、もうひとつの魔法の紙となる「docker-compose.yml」が完成なのですが、1つだけ注意点があります。
少々まどろっこしい話なのですが、ここで作成した「docker-compose.yml」には、YAMLというファイル形式が採用されているため、インデント = 半角スペースで作成された余白の数が意味を成しています。
そのため、みなさんが上記のファイルを内容を記述するときは、必ず余白をそのまま残すようにしてください。
3-5. 手順5:あなたのプログラムを作ろう
「Dockerfile」と「docker-compose.yml」の2つの魔法の紙が揃ったところで、いよいよ動作させるプログラムを書いていきます!
「Dockerfile」と「docker-compose.yml」を作成した「my-game」フォルダの中に、「game.py」という名前のファイルを作りましょう。
touch game.py
そこに下記のような簡単なプログラムを書いたら、ファイルを保存しておきます。
// game.py
print("ゲームスタート!")
3-6. 手順6:Docker Composeであなたのプログラムを動かそう
全ての準備が整ったところで、「my-game」フォルダの中で、下記の魔法の呪文 = コマンドを実行してみます!
docker-compose up
Docker Composeによって、ぼっち大学生のみなさんが作成したプログラムが動作するDockerコンテナが実行されるはず。
ターミナルに「ゲームスタート!」と表示されたら、成功です!おめでとう!!!
なお、ターミナルで「Ctrl+C」を押すと、Docker Composeで実行しているコンテナが停止するような仕組みになっています。
4. さいごに:プログラミング初心者におすすめのDocker本を現役エンジニアが紹介します
ぼっち大学生のみなさんが、試しにDockerを使用してみるための超初心者向けチュートリアルを紹介させていただきました。
最後に、元フリーランスエンジニアの僕が、プログラミング初学者なぼっち大学生のみなさんにおすすめしたいDockerの関連書籍を紹介させていただき、この記事の幕引きとさせていただきます。
4-1. おすすめDocker本その1:「仕組みと使い方がわかるDocker&Kubernetesのきほんのきほん」
プログラミング初学者におすすめの「仕組みと使い方がわかるDocker&Kubernetesのきほんのきほん」は、コンテナ技術とオーケストレーションの世界を分かりやすく解説した入門書です。
DockerだけでなくKubernetesについても詳しく説明されているため、実践的な内容をお求めの気合あふれるぼっち大学生にぜひおすすめしたい書籍となっております。
Dockerは、この記事で紹介した通り、プログラム ≒ アプリケーションとその依存関係を、1つのパッケージにまとめるコンテナ技術を提供し、開発からデプロイまでのプロセスを効率化します。
一方、Kubernetesというのは、複数のコンテナを柔軟に管理・運用するオーケストレーションツールです。
この本では、DockerとKubernetesの基本概念から実践的な使い方まで、初学者にも理解しやすい言葉と豊富な図解で説明されています。
コンテナ技術のメリットや、Kubernetesを利用した効率的なコンテナ管理の方法を具体的な例を交えて学ぶことができます。
また、実践的な練習問題やチュートリアルも用意されており、知識を確実に身につけることができます。
プログラミングの基礎知識がない方でも、コンテナ技術とオーケストレーションの世界を楽しみながら学べること間違いなし!
まずはこの1冊で、DockerとKubernetesの基礎をしっかりと身につけ、アプリケーション開発の効率化に繋げましょう。
4-2. おすすめDocker本その2:「たった1日で基本が身に付く!Docker/Kubernetes超入門」
プログラミング初学者にぴったりな「たった1日で基本が身に付く!Docker/Kubernetes超入門」は、コンテナ技術とオーケストレーションの基礎を短期間で学べる画期的な一冊です。
忙しくてあまり学習に時間を割けないが、短い時間でDocker関連の知識を身に付けたいぼっち大学生におすすめの書籍となっております。
この書籍では、DockerとKubernetesの基本的な概念や使い方を、初学者にもわかりやすい言葉と豊富な図解で丁寧に解説。
短時間で効率的に学習できる構成になっています。コンテナ技術のメリットや、Kubernetesを用いた効果的なコンテナ管理方法を、具体的な例を交えて学ぶことができます。
また、手を動かしながら実践的なスキルを身につけられる練習問題やチュートリアルも充実。プログラミングの基礎知識がない方でも、1日でDockerとKubernetesの基本を楽しく学べます。
この1冊で、コンテナ技術とオーケストレーションの世界を1日体験してみましょう!
4-3. おすすめDocker本その3:「エンジニアなら知っておきたいmacOS環境のキホン」
プログラミング初学者にピッタリな「エンジニアなら知っておきたいmacOS環境のキホン」は、Macユーザーなぼっち大学生におすすめしたい、Macを活用した開発の基礎を詳しく解説した一冊です。
この書籍では、macOSの基本操作やエンジニアに役立つ機能、開発環境の構築方法など、幅広い知識を分かりやすく紹介しています。
Macの便利な機能やショートカットキー、エンジニア向けアプリケーションの活用法を学べるだけでなく、ターミナルの使い方やシェルスクリプトの基本、Gitの操作方法など、Macでの開発作業に欠かせない知識も網羅しています。
また、現代の開発環境に欠かせないDockerについても触れられており、Mac上でのDockerのインストールや基本的な使い方を学ぶことができます。
初学者向けの練習問題やチュートリアルも豊富で、実践的なスキルを身につけることができます。
プログラミングの基礎知識がない方でも、Macを活用したエンジニアリングの世界を楽しみながら学べること間違いなしです。
この一冊で、Macの操作に自信を持ち、効率的な開発環境を整えることができます。エンジニアとしてのキャリアをスタートするための理想的なガイドブックです。
ぜひ、「エンジニアなら知っておきたいmacOS環境のキホン」を手に取り、Macでの開発作業やDockerの活用における第一歩を踏み出しましょう。