Dockerとは?Dockerを使うメリットを解説

今回は「Dockerとは何なのか?」「Dockerで何ができるのか?」といったことを解説します。

世の中ではDockerはどんどん使われている流れになっているので、よくわからない人はこの際「Dockerとは何なのか?」ということをざっくりでも理解しておきましょう。

また、Linuxの基本的な知識が必要になるので、Linuxの基本は理解している前提で進めます。

 

Dockerとは?

Dockerとは、コンテナ型の仮想環境を作成し、配布や実行を行うためのプラットフォームです。開発はDocker社が行なっています。また、DockerのコンテナにはLinuxのコンテナ技術が使われています。

VirtualBoxなどの仮想マシンでは、ホストマシン上でハイパーバイザを利用してゲストOSを動かし、その上でミドルウェアなどを動かします。

しかし、Dockerコンテナはホストマシンのカーネルを利用してプロセスやユーザなどを隔離しているので、あたかも別のマシンが動いているかのように動かすことができます。

 

また、Dockerはミドルウェアや環境設定をコードとして管理します。

コードとして管理すると以下のようなメリットがあります。

  • コード化されたファイルを共有すればどこでも誰でも同じ環境を作ることができる。
  • 作った環境を配布しやすい。
  • スクラップやビルドが簡単にできる

 

例えばWindows環境では動くけど、Linuxでは動かなかったというような事態はDockerを使うことで防ぐことができます。

また、開発の工程で使っていた環境をそのまま本番環境に持って行くことができるため、環境の差による問題が発生しにくくなります。

 

作成したDockerイメージを他の人と共有することで環境のバージョンの違いによるズレを防止できたり、毎回環境を構築する手間を省くことができます。

クラスタ構成を構築するときもDokcerイメージがあればコンテナ名を変えるだけでコンテナを起動できます。一から環境を構築する作業がなくなるのでクラスタ構成もラクになりますね。

クラスタ構成はコンテナを管理するオーケストレーションツールを使うことで、さらに運用がラクになります。オーケストレーションツールはKubernetesが有名ですね。

さらに、コード化したDockerfileを構成管理し、それをJenkinsやCircleCIなどのCiツールで、ビルド、デプロイ、テスト、画面試験などを毎日実行すれば、安心して効率的に開発を進められます。

 

こんな感じでDockerを使うと色々メリットがあるのがわかるかと思います。主に環境面での恩恵が大きいですね。

Dockerコンテナを実行する

Dockerイメージは仮想マシンで言うところのVMイメージですが、Docker Hubで公開されています。

ここからDockerイメージを取得してくれば必要なミドルウェアが入った状態ですぐにDockerコンテナを使用できます。

試しにnginxのDockerイメージを使ってサーバーを立ててみます。以下のコマンドを実行します。

docker run --name some-nginx -d -p 8080:80 nginx

 

このコマンド一つで以下のことができます。

  1. Nginxがインストール済みのDockerイメージを取得
  2. 取得したDockerイメージでコンテナを起動
  3. コンテナの中でNginx起動

 

あとはブラウザで「http://<IPアドレス>:8080/」を開けば、サーバーにアクセスできます。

 

WordPressのコンテナを動かす

DockerでWordPressのコンテナを動かすには以下のコマンドを入力します。

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
docker run --name some-wordpress -e WORDPRESS_DB_PASSWORD=my-secret-pw --link some-mysql:mysql -d -p 8080:80 wordpress

 

たったこれだけでWordPressが起動します。

あとはブラウザで「http://<IPアドレス>:8080/」とアクセスすれば、WordPressの画面にアクセスできます(最初は設定画面になります)

 

まとめ

Dockerを使うと本当に少しのコマンドでサーバーや環境を構築できたり、アプリを動かすことができます。

ツールがすでにインストールされたDockerもオープンソースで公開されており、同じくらいのコマンドで起動が可能です。

きになるツールがあったらすぐにコマンドを叩けば使用できるのでとても便利ですね。

 

もちろん公開されているDockerイメージを使うこともできますが、自分で作ることも可能です。

自分でつくったDockerイメージを他の人と共有すれば同じ環境を簡単に構築することもできますね。

WordPressのバージョンをあげたいという場合には新しいバージョンのWordPressコンテナを起動し、成功したら古いバージョンのWordPressを削除するといった方法でできます。

バージョンアップでの敷居も下がるのがいいですね。