- Docker(ドッカー)とは何か?メリットは何?
- イメージ (Image) とコンテナ (Container)
- DockerをMacにインストールする
- Dockerを試してみる
- redisイメージをダウンロードしてコンテナを起動する
- Dockerをいろいろと試してみる
- ところで、docker run って一体何?
- dockerの現在の状況を確認するにはdoker psを使う
- 稼働中でない全てのDockerコンテナ・イメージ・キャッシュを削除してスッキリしたい時
- docker logs
- dockerコンテナを停止する
- dockerコンテナをkillする
- docker exec
- Docker ファイルを作成する
- Dockerfileがやっていることとは?
- Dockerを学習するならエンジニアの中で人気のあるUdemy(ユーデミー)の講座がオススメ
Docker(ドッカー)とは何か?メリットは何?
初心者がプログラミングやWebアプリケーションを作成する際に最初につまずくのは環境構築を行うことです。
「初心者」は、と書きましたが、マニアックなことをしようとすると、依存するライブラリをそろえたりバージョンの違いを解決したりと、上級者ですら多大な時間を費やして環境構築を行ってきました。
Dockerはこうした環境構築の「悩み」を解決してくれます。
ソフトウェアのインストールを考えてみます。
Dockerを使用することで、環境構築や依存関係の解決などに頭を悩ますことなく、ソフトウェアのインストールと実行が非常に容易に行うことができるようになります。
ではDockerとは何なのでしょうか?
Dockerはコンテナを動かすためのプラットフォームです。
Docker Server
Docker Machine
Docker Images
Docker Hub
Docker Compose
これらのサービスをまとめてDockerと呼んでいます。
イメージ (Image) とコンテナ (Container)
dockerはイメージをダウンロードして、そこから複数のコンテナを複製します。
DockerをMacにインストールする
Dockerをインストールするのは簡単です。
- docker.comでDocker Hub(ハブ)アカウントを作成する
- MacにDockerをダウンロード(.dmgファイル)してインストールする
ターミナルでdockerがインストールされたかを確認
$ docker version Client: Docker Engine - Community Version: 18.09.0 API version: 1.39 Go version: go1.10.4 Git commit: 4d60db4 Built: Wed Nov 7 00:47:43 2018 OS/Arch: darwin/amd64 Experimental: falseServer: Docker Engine - Community Engine: Version: 18.09.0 API version: 1.39 (minimum version 1.12) Go version: go1.10.4 Git commit: 4d60db4 Built: Wed Nov 7 00:55:00 2018 OS/Arch: linux/amd64 Experimental: true
こんな感じでバージョン情報が表示されればインストール完了です。
Dockerを試してみる
docker run hello-world
hello-world
というイメージからコンテンを作成せよという命令です。
Docker Clientに指示を出し、Docker ClientはDocker Severにhello-world
というイメージがあるか問い合わせます(実際に存在するイメージです)。
以前にダウンロードしたことがあれば、イメージはキャッシュとしてあなたのパソコンに保存されているのでそれが使われます。イメージが無ければ、Docker Hubからダウンロードすることになります。
redisイメージをダウンロードしてコンテナを起動する
データベースであるredisイメージをダウンロードしてコンテナを起動する。
docker run -it redis
これでredisを起動する。
-itオプション
はコンソールに結果を出力するという意味です。
Dockerをいろいろと試してみる
実際にいろいろと試してみてDockerの挙動を確認してみます。
docker run busybox echo hi there
busybox
というイメージから複製されたコンテナ上でecho hi there
が実行されています。単純に"hi there"と表示する。
docker run busybox ls
dev
etc
home
proc
root
sys
tmp
usr
var
ところで、docker run って一体何?
dockerは常にイメージからコンテナを複製して何かを行います。
docker runは docker create とdocker startを組み合わせたものです。
docker run
= docker create
+ docker start
docker createでイメージからコンテナを複製し、docker startでコンテナを起動します。
ですので何らかの理由で停止したdocker コンテナを再起動することができます。
dockerコンテナを再度実行する時
docker start -a [container id]
dockerの現在の状況を確認するにはdoker psを使う
稼働中のコンテナを確認する
docker ps
停止中のコンテナも含めて確認する
docker ps --all
稼働中でない全てのDockerコンテナ・イメージ・キャッシュを削除してスッキリしたい時
稼働中でない全てのDockerコンテナ・イメージ・キャッシュを削除します。
環境をスッキリきれいにしたい時に使います。
何度もdocker build
してdocker run
していると不要なイメージやイメージのキャッシュ、コンテナなどを削除します。
docker system prune
- 全ての停止(stopped)しているコンテナ
- 使われていない全てのネットワーク
- 不要なイメージ
- 全てのキャッシュ
が削除されます。
docker logs
docker startで実行しているコンテナの標準出力を読み込みます。
docker logs [container id]
docker ps --all
で確認できます。dockerコンテナを停止する
docker stop [container id]
SIGTERMがプロセスに送られる。
dockerコンテナをkillする
docker kill [container id]
SIGKILLがプロセスに送られる。
docker exec
コンテナ内でコマンドを実行するためには docker exec -it
を使用します。-itは -i -tの2つのフラッグを一つにくっつけた物で、
コンテナの標準入出力をターミナルに接続し操作できるようにしたものです。
docker exec -it [コンテナのID] redis-cli
とすると、ターミナルでコンテナ内のredis-cliを実行することができるようになります。
docker exec -it [コンテナのID] sh
シェルモードを終了するには
Control + D
もしくは exit
とタイプします。
docker run でも当然同様のことができて、busyboxイメージを立ち上げてshを実行します。
docker run -it busybox sh
「busyboxというイメージからコンテナを立ち上げて、その中でシェルモードを実行する」という意味です。
Docker ファイルを作成する
redisが動作するイメージを自分で作成してみましょう。
mkdir redis-image cd redis-image
Dockerfileを作成します。
Dockerfileというファイルを作成した場所で、
docker build .
Successfully built [ID]
と出るのでこのIDを使って
docker run [ID]
として実行します。
Dockerfileがやっていることとは?
OSの入っていない新品のPCがあったとしてこれにChromeブラウザをインストールしといてと指示するようなものと覚えておけばOKです!
Dockerを学習するならエンジニアの中で人気のあるUdemy(ユーデミー)の講座がオススメ
プログラミングや周辺技術を学習するならUdemy(ユーデミー)というオンライン学習プラットフォームがわかりやすくてオススメです。
Udemyは新しい技術をサックと学習するのに最適で、エンジニアの間で密かに人気が高まってきています。
Udemyだとセール期間を狙えば1300円ぐらいで様々な講座を購入できます。
プログラミング等の専門書を購入するより安くて学習効果は高いです。
分かりやすくてオススメな講座は英語の物が多いですが、中には日本語の物もあります。
英語もそれほど難しくないですし、英語字幕を表示することができますので、ちょっと英語ができる方には英語の講座もオススメです。
コメント