
こんにちは。
皆さんお元気ですか?
私は、最近イロイロなことに興味があり、イロイロなことに手を出し、結局何も身についていない今日この頃です。。はぁ~。
そんなことより、以前
「Vagrant を使うと仮想マシン構築がすごいラク!まずはインストールしよう!」
という記事を書いたのですが、Docker というもっとやばいツールあることを知りました。
ただ Google Trend で見ると、当初からめちゃめちゃ人気がありました。。笑

まだ知らないという、そこのあなた!!
今からでも遅くありません。この記事読んでソッコーでドヤることをオススメします!!笑
Docker って何さ?
深い話は慣れてから調べた方が良いと思いますが、
簡単に言うと、
- コマンドラインツールで、
- めっちゃ簡単にインフラ周り (Apache HTTP Server, Nginx, MySQL, PostgreSQL) の構築ができるツールで、
- ゲスト OS のインストールは不要だからメッチャ早く構築できて、
- 起動も早くて
- Docker がインストールされていれば、どこでも (Linux, Mac, Windows, もちろんクラウドでも) 同じように構築できるツール!!
ちゃんと言うと
- コンテナ仮想化ツール (→ Virtualbox/Vagrant は OS 仮想化ね。)
- コンテナは、ホストのカーネルを共有
- そのカーネルのリソース管理機能を利用
- namespace を使ってるので、コンテナ同士は独立している
まー、詳しいことはどうでも良いので、まずは触りましょ!笑
まず知っておくべきこと
早速触りたいところですが、まずはじめに知っておく単語があります。
Docker Hub / レジストリ (registry)
こちらの公式サイト Docker Hub のことをいうのですが、こちらから DB やらウェブサーバーやらを取得してきます。レジストリ (registry) は管理・配布する場所で、Docker Hub はその一般公開版になります。
イメージ (image)
次にイメージですが、Docker Hub から取得する DB やらウェブサーバーやら というものをイメージといいます。
コンテナ (container)
最後にコンテナですが、イメージ (image) から構築したDB やらウェブサーバーやらをコンテナといいます。 例えば、同一イメージから同一の DB を構築することもできます。
ちなみに、この場合、ポートを変更しないといけないので注意が必要です。。
全体の流れ (ライフサイクルと言います) を簡単に説明すると、
- Docker Hub からイメージを docker pull
- イメージから docker create してコンテナ作成
- コンテナを docker start で起動
- 起動したコンテナは docker stop で停止
- docker rm <コンテナ ID> で指定したコンテナを削除
- docker rmi <イメージ ID> で指定したイメージを削除
になります。他にもリストしたり、独自にイメージ作成したりの機能もあったりしますが、まずは全体の感覚を掴めたと思います。
絶対使うコマンド 10 個
それでは早速動かしていきましょ!!
docker container ls
現在動作しているコンテナをリストします。
インストール直後は何もないので空の結果になりますが、使い始めたら 100% このコマンドで確認することになります。既に動いているコンテナを使いたい可能性があるので。。
オプションを使うとより、詳細な情報が取得できます。
- docker container ls -a で、動作している・していないコンテナ全てをリスト (このオプションなしだと、動作しているものだけリスト)
- docker container -q で、コンテナ ID を取得することができます。
- docker container -aq で、想像通り全てのコンテナ ID を取得できます。
docker pull <image name>
このコマンドでほしいイメージをダウンロードします。
例えば、MySQL の最新版をダウンロードしたい場合は、docker pull mysql となります。( https://hub.docker.com/_/mysql )

既に同じイメージがあれば、ダウンロードはせずに「ダウンロードしてあるよ!」と教えてくれます。すごい便利ですね。。
docker image ls
既にダウンロードしているイメージをリストします。ここで取得できるイメージ ID でコンテナを作成します。

docker run [オプション] <image name> [コマンド]
このコマンでダウンロードしたイメージ ID を指定することでコンテナを作成することができます。
もしイメージをまだダウンロードしていなければ、docker pull & docker create & docker run を一括で行います。
docker stop <コンテナ ID>
起動したコンテナを停止します。
docker kill もコンテナを停止するのですが、こちらは起動シているプロセスを気にしながら停止するので、また同じコンテナを使いたい場合はこちらがオススメです。
docker start <コンテナID>
停止コンテナを起動します。
データも残ったままなので、DB にデータを入れ、後日利用することもできます。
docker build
別の記事で詳しくやっていきたいのですが、イメージは Dockerfile を使って自分でカスタマイズすることができます。LAMP スタックを構築する Dockerfile 書いたり、linux & tomcat & 独自のウェブアプリを構築する Dockerfile も作成できます。これらは Docker Hub に docker push することで一般に公開できます。Docker Hub を見ると、個人名のものがたくさんあることがわかりますね。
docker rm <コンテナ ID>
コンテナを削除します。
docker rm $(docker container ls -aq) とすることで、全てのコンテナを一括削除できます。
docker rmi <イメージ ID>
イメージを削除します。
docker rmi $(docker image ls -q) とすることで、全てのイメージを一括削除できます。
上記の他に、より詳しく知りたい方は、公式の「コマンドライン」ページ (英語) 確認できますので、参照してくださいね。
まとめ
いかがでしたでしょうか?
これで明日からあなたも「え?まだ Docker 知らないの?オレ、知ってるよ?」とドヤれることでしょう。。
ただ、嫌われないように気をつけてくださいね。笑