docker

初心者こそDockerを使ってみよう【Docker入門】

みなさんDockerってご存知ですか?

Docker(ドッカー[2])はコンテナ型の仮想化環境を提供するオープンソースソフトウェアである[3]。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ (Wikipedia)

簡単に言うと、自分のPCの上にもう一個OSを立ち上げて好きな環境を作っちゃおう(しかも軽い)と言う便利なやつです。

https://twitter.com/tatane616/status/991349203329630210

今はReactとかRailsを使って開発しているのですが、Docker使うと色々便利だし、環境壊したらどうしよう…みたいな心配もなくて楽しいなと思ったのでこの記事を書きました。

 

コンテナとは

Dockerはコンテナがどうのこうの〜といってますが、コンテナとはアプリケーションやデータベース用に分離された空間を提供するものです。

(「Digital Ocean – The Docker Ecosystem: An Introduction to Common Components」より引用)

ホストOSの上にこの分離された空間をいくつも作り、それらを複数組み合わせることでシステムを構築できます。

例えば、Webサーバーとプロキシサーバー、API部、DBなどをそれぞれ別々で作成することができます。

これのいいところは、コンテナごとに分けて疎結合にすることで、使い捨てしやすかったり環境の変更が容易なことです。実際のマシンに直接環境構築をすると、バージョンを変更したり依存関係を変更するのが難しいですが、Dockerなら楽に行うことができます。

また、Dockerさえ導入されていれば、どんな環境でもシステムを運用することができるので、1回Docker上でシステムを構築してしまえばあとはほとんど環境を選ばないのも大きいです。

コンテナはDockerイメージというもので書き出すことができ、これをDocker Hubなどに上げておきことで管理しやすくなります。

Dockerイメージさえあればコンテナをビルドして起動させることができるので、1から構築を考えなくても公式や先人たちが作ってくれたイメージを利用することで、すぐに環境を作ることが可能となっています。

Dockerイメージとは【Docker解説】

Dockerコンテナとは【Docker解説】

 

インストール

まずはインストールしてみます。

今回はMacの人を対象とします。WindowsにもDocker for WindowsがあるのでWindowsユーザーの方は調べてインストールして欲しいのですが、Windows 10 homeはHyper-V(仮想化システム)をインストールすることができないため、proなどにアップグレードする必要があることに注意してください。

こちらにアクセスして、「Get Docker CE for Mac (Stable)」からインストールしてください。

コマンドラインを開き、docker versionでバージョン確認を行うことができます。

docker run hello-worldがちゃんと動作したら導入成功です。

コマンド等は軽く説明するだけにするので詳しく知りたい方は公式や、よくまとまっている記事が多くあるのでそちらを参照していただきたいです。

 

Linux(Ubuntu)を入れてみる

初心者の方におすすめしたいのがLinux OSをDockerに入れてみることです。

「Linuxって興味あるけどなんか難しそう…」とか「環境構築わからない…」って方を多く見かけますが、Dockerなら簡単に導入できるしなんかやばいことしたと思ったらDockerコンテナを作り直せばいいだけなのですごく楽です。

 

早速Linuxを入れてみたいと思います。今回はUbuntuを導入していきます。

まずはDocker HubからUbuntuの公式イメージを持ってきます

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
a48c500ed24e: Pull complete
1e1de00ff7e1: Pull complete
0330ca45a200: Pull complete
471db38bcfbf: Pull complete
0b4aba487617: Pull complete
Digest: sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e
Status: Downloaded newer image for ubuntu:latest

 

ちゃんとイメージを取得できているのを確認できます。

$ docker images
REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
ubuntu                                       latest              452a96d81c30        4 days ago         79.6MB

次に、コンテナを作成してみます。

$ docker run -it ubuntu
root@8220330a9e62:/#

-itをつけることで、コンテナの中に入って操作できるようになります(というイメージ)

これでもうUbuntuの導入が終わったので、好き放題できます。

apt-get install vimしてvimを入れて遊ぶなり好きなことを試しましょう。

満足したらexitで抜けます。

 

コンテナは次のようにして確認できます。

docker container ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
8220330a9e62        ubuntu              "/bin/bash"         11 minutes ago      Exited (0) 16 seconds ago                       boring_noyce

-aオプションで、停止中のコンテナ(STATUSがExited)もみることができます。起動中のコンテナはUP〜と表示されます。

先ほどは自動的にコマンドが/bin/bashになっていましたが、どのコンテナでも中に入って確認することはできます。

$ docker run -it <CONTAINER ID> /bin/bash

既に起動中のコンテナであれば、runではなくexecで大丈夫です。

 

Dockerイメージは結構サイズがあったりするので、不必要な場合はコンテナと一緒に消しておきましょう。

$ docker rm  <CONTAINER ID>
$ docker rmi  <IMAGE ID>

 

GitHubなんかをみると参考になるコードがたくさんあるので色々試してみると面白いです。

ReactとRailsの簡単な環境構築も記事にしてあるのでぜひ見てみてください。

Docker + Webpack4でReactの環境構築をする

DockerでRuby on Railsの環境構築をする【初心者向け】