こんにちはWNです。
最近、仕事で他社様の開発環境を頂いて改修作業をするというようなケースが多いのですが、みなさんDockerを活用して環境を構築することが多いように感じます。
Dockerはデファクトですね。
なので、今回はDockeの基礎と復習を兼ねて下記の内容でブログ書きたいと思います。
- Dockerの基礎を学ぼう
- Dockerをインストールしよう
- Dockerの基本はコマンド操作
Dockerの基礎を学ぼう
Dockerは、Wikipediaによると下記のように説明をしています。
Dockerはコンテナ型の仮想化環境を提供するオープンソースソフトウェアである。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。
Docker – Wikipedia
昔よく聞いた「VMware」などは完全仮想化を行うので、VMware内でハードウェアデバイスをエミュレートするので動作が遅いです。
一方でDockerはコンテナ(完全仮想化で言う「ゲストOS」)からハードウェアを操作する際はコンテナがホストOSにリクエストを送るので動作が軽いという特徴があります。
Dockerをインストールしよう
DockerはWindows、MacOS、Linuxなどにインストールすることが出来ます。
Get Started with Docker | Docker
Windowsの場合はWindws 10からの対応となるのと、Oracle Virtual BoxがインストールされているPCにはインストールできないので注意が必要です。
Install Docker for Windows | Docker Documentation
Dockerの基本はコマンド操作
Dockerの操作はコマンドで行うのが基本です。
なので最低限のものは覚えるか、このページをブックマークしてチートシートとしてご利用ください。
イメージの取得
docker pull イメージ名
Dockerはイメージを基にコンテナを起動します。
まずはイメージを取得しましょう。
イメージはDocker Hubから取得します。
まずは手始めに「hello-world」というイメージを取得します。
hello-worldは、Docker Hubの下記にあります。
library/hello-world – Docker Hub
$ docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
取得に成功したようです。
イメージ一覧の表示
docker images
Dockerは起動するコンテナの基となるイメージを保持します。
このイメージをコピーしコンテナとして起動します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 4ab4c602aa5e 3 weeks ago 1.84kB
一覧の中に先ほど取得した「hello-world」があるのが分かりますね。
イメージの起動
docker run コンテナ名
取得したイメージを基にコンテナを起動します。
先ほど取得したhello-worldを起動してみましょう。
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
お試し用のコンテナなのですぐに終了します。
コンテナはカスタマイズが可能なので、実際に利用するときは色々なアプリを入れ設定を施した状態で起動させます。
起動中のコンテナ一覧の表示
docker ps
hello-worldはすぐに終了するコンテナでした。
なので、この起動中のコンテナ一覧を表示するコマンドでは何も出力されません。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
作成済みのコンテナ一覧の表示
docker ps -a
先ほどコンテナはイメージを基に作ると説明しました。
なので、hello-worldのようにすぐに終了するコンテナでも、コンテナ自体は作成され保存もされています。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f4a8645ab23 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago optimistic_kapitsa
作成済みのコンテナを削除
docker rm コンテナID
コンテナを削除することもできます。
不要になったコンテナを削除することで、ディスクの節約になるでしょう。
$ docker rm 2f4a8645ab23
2f4a8645ab23
イメージの削除
docker rmi イメージID
登録されたDockerイメージを削除する際に実行するコマンドです。
削除する際はイメージの名前ではなくIDを指定します。
上の一覧からnginxを削除する際は下記のコマンドを実行します。
$ docker rmi 4ab4c602aa5e
Untagged: hello-world:latest
Untagged: hello-world@sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Deleted: sha256:4ab4c602aa5eed5528a6620ff18a1dc4faef0e1ab3a5eddeddb410714478c67f
Deleted: sha256:428c97da766c4c13b19088a471de6b622b038f3ae8efa10ec5a37d6d31a2df0b
最後に
いかがでしたか?
dockerコマンドを使いこなすことがDockerをマスターする近道かと思います。
ヘルプや公式サイトを見ながら、いろいろ試してみると良いと思います。