LoginSignup
2
5

More than 3 years have passed since last update.

Dockerを触ってみる

Last updated at Posted at 2018-02-21

こんにちわ

グローバルセンス株式会社のskanehiraです。

最近気になっているDockerについて触ってみました。
仮想化技術の一つというのは分かっているが、VMとは何が違うのかが分かっていないので、
メリット・デメリットを知るというのが目的です。

Dockerとは

DockerはVMと違ってOS上に仮想OSを作らず、
Linuxの一部を仮想化してその上にアプリケーションを動かす様です。

Dockerでは、コンテナと呼ばれる領域があり、
その領域内でアプリが動くそうです。
倉庫と同じイメージですね。

DockerとVMに違いを図で表すと以下になると思います。
image.png

OSほどディスク・CPU・メモリを要しないため、
起動が早く・動作も軽いので、仮想ではなくそのままOS上で動いている様な感触です。

また、Dokcer上で動いているので、
ローカルにアプリケーションの実態がないので環境汚染も怖くありません。
ここはVMと同じですねー

概要を掴んだどころで、実際触ってみましょう。

Dockerのインストール

1. ダウンロード
無料のCommunity Editionを使います。
こちらから自分のプラットフォームを選択してダウンロードします。

2. インストール
Mac版ですと、実行ファイルをアプリケーションフォルダに移すだけです。
image.png

3. 起動
appをそのまま実行するだけです。
実行後、バーにDockerのアイコンがありますので、そちらをクリックしてDocker is runnigになっていればOKです。

image.png

Dockerを使ってみる

今回は、あんまりDockerの仕組みを理解して無くてもとりあえず環境作りたいので、
docker-composeを使います。

まずWordPressを使うのに本体とMySQLが必要らしいので、
yamlファイルにそれらを定義してます。

  • yamlファイルの定義
MacBookPro:wordpress skanehira$ ll
total 8
-rw-r--r--  1 skanehira  staff  542  2 21 08:59 docker-compose.yaml
MacBookPro:wordpress skanehira$ cat docker-compose.yaml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
MacBookPro:wordpress skanehira$
  • docker-composeでコンテナを起動

yamlファイルを作成したら、起動します。
初回はイメージのダウンロードが走りますので少し待ちます。

MacBookPro:wordpress skanehira$ docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating volume "wordpress_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
4176fe04cefe: Pull complete
d1e86691d483: Pull complete
ffadeffb3eb4: Pull complete
6c2c640eac6b: Pull complete
cec6a6ff8ae8: Pull complete
af71dde5fa23: Pull complete
2546980014e4: Pull complete
a525a4f1d664: Pull complete
af610cdb4173: Pull complete
fe36edc2517a: Pull complete
Digest: sha256:4f9323cb4aeca062fd1a341b50c7721b9aef6bff3ded806dec0897323b8b7be8
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
8176e34d5d92: Pull complete
f6c81892adaa: Pull complete
c8125c73b868: Pull complete
5ef22f6299b6: Pull complete
8537460e9a8c: Pull complete
b837671b83f0: Pull complete
366ea9d8b411: Pull complete
c4dd539af472: Pull complete
445753fb3ee6: Pull complete
6811f6b5d500: Pull complete
2ca365cdc65d: Pull complete
c91023a57f04: Pull complete
dcf0735fda8a: Pull complete
6b23fdc3538b: Pull complete
2eed880b86fe: Pull complete
798b2e547e59: Pull complete
159be43511e4: Pull complete
b5605b08f665: Pull complete
20d8e9ec2764: Pull complete
Digest: sha256:841369e184ecfa3969adcad3648f8b96294197a489dfd802e61be5eee7d6ddde
Creating wordpress_db_1        ... done
Creating wordpress_db_1        ...
Creating wordpress_wordpress_1 ... done
MacBookPro:wordpress skanehira$

イメージの確認

MacBookPro:wordpress skanehira$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           latest              80a6fca6cc6a        2 days ago          407MB
mysql               5.7                 f0f3956a9dd8        3 days ago          409MB
MacBookPro:wordpress skanehira$

イメージダウンロード完了後、自動でアプリケーションを立ち上げてくれます。
立ち上がっているかどうか、プロセスを見てみます。
STATUSがUpになっているので問題なさそうです。

MacBookPro:wordpress skanehira$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
d445a1c84185        wordpress:latest    "docker-entrypoint.s…"   21 seconds ago      Up 19 seconds       0.0.0.0:80->80/tcp   wordpress_wordpress_1
650726ae1ca9        mysql:5.7           "docker-entrypoint.s…"   21 seconds ago      Up 20 seconds       3306/tcp             wordpress_db_1
MacBookPro:wordpress skanehira$

プロセスが立ち上がったらブラウザで実際WordPressにアクセスしてみます。
無事セットアップ画面にたどり着きました。

image.png

image.png

image.png

おおお、これが港で噂のWordPressか(小並感)
ぱっと見色々といじれそうで凄そう(小並感)

  • アプリケーションを停止 立ち上げたアプリケーションを停止させるのもdocker-comopseを使って行います。
MacBookPro:wordpress skanehira$ docker-compose down
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_db_1        ... done
Removing wordpress_wordpress_1 ... done
Removing wordpress_db_1        ... done
Removing network wordpress_default
MacBookPro:wordpress skanehira$

プロセスもちゃんとなくなっていますね。

MacBookPro:wordpress skanehira$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

最後に

今回はDockerの概念について調べたり理解したりして、
細かい使い方に関しては特に書いていませんが、どういったものかはおおよそ理解しました。

VMはOSの仮想化に対して
Dockerはアプリケーションの仮想化と言った方イメージし易いのかもしれませんね。

自分の場合はDockerを使うほどの事をしていないので、現時点での需要はなさそうだなぁと思いました。
とは言え、ある程度扱える様になったほうが作業効率が上がりそうなので、
今後は積極的に使っていこうと思います。

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5