Dockerとは
説明が下手なのでググってください。とてもわかりやすい説明がゴロゴロあります。
導入のメリット
- 開発環境をコマンド一発でかんたんに構築できる
- 複数人で開発するときに、環境の差が発生しなくなる
- バージョン違いやミドルウエア違いなどの複数の環境を、一つのホストマシン上で実行できる
- 本番環境もDockerで運用してしてしまえば、開発環境と本番環境との差が(ほとんど)なくなる
など
用語集
※「正確」より「わかりやすい」説明にしています。
用語 | 説明 |
---|---|
コンテナ(container) | 仮想OS…ではない。あたかも仮想OSが実行されているかのように動くプロセス。コンテナ同士は独立している。 |
Dockerイメージ(image) | コンテナの元となるファイル。イメージからコンテナを実行する。また、コンテナからimageを作成することもできる。 |
Dockerfile | Dockerイメージを作成するためのファイル。DockerfileをBuildすることで、Dockerイメージが作成できる。テキストで記述されており、共有が容易。ベースとなるOSや、そのOS上で実行するコマンドなどを記述しておく。DockerimageからDockerfileも作れなくはないが、 |
DockerHub | GitHubのDocker版みたいなもの。Dockerimageを管理している |
それぞれの関係(イメージ)
- Dockerfileから
build
して、Dockerイメージを作成する(複数のイメージを別名で作成可能) - Dockerイメージを
run
して、コンテナを実行する(複数のコンテナを別名で実行可能) - コンテナを
commit
して、Dockerイメージを作成する(複数のイメージを別名で作成可能) - ローカルにあるDockerイメージを
Push
して、DockerHubにて管理する - Dockerファイルや、そのコマンド実行で必要なファイル群をGitHub上で管理して、DockerHubとLinkすることで、GitHubのソースからDockerHub上でDockerimageを作成できる
Dockerイメージは、DockerHub上で公開されているリポジトリからpull
してくることで、ローカルマシン上で利用できるようにもなります。
Docker For Windowsの導入
詳しいことは、Dockerのホームページ、または日本語ドキュメントを参照してください。
ここでは一通りの手順を簡単に記載します。
要件
Windows10で、Hyper-Vホストが動作する環境であること(Windows10 homeはNGです)
手順
- Docker For Windowsをダウンロードしてくる。
- インストーラを実行する。
- Hyper-Vが無効となっている場合は有効にする。コントロールパネルの[プログラム]-[Windowsの機能の有効化または無効化]から「Hyper-V」にチェックを付ける。
- インストール完了を確認する。
バージョン確認
> docker version
よく使うDockerコマンド
Dockerの一覧確認
dockerイメージの一覧
> docker images
コンテナの一覧
> docker ps [-a]
オプション | 説明 |
---|---|
-a | 停止中のコンテナも含めて表示する |
Dockerイメージの作成(取得)
Dockerfileから作成
> cd C:\Users\[Dockerfileがあるフォルダ]
> docker build -t [image名]:[タグ名] .
オプション | 説明 |
---|---|
-t | '名前:タグ' 形式でimageの名前とタグを指定 |
-m | 構築コンテナのメモリ上限を指定 |
DockerHubより取得する
> docker pull [DockerHubユーザーID]/[リポジトリ名]:[タグ名]
:[タグ名]の指定がない場合は自動的にlatest
タグのimageを取得してくる。
Dockerイメージからコンテナの作成(実行)
非常によく使うコマンド。詳細は日本語ドキュメント(run)を参照すると良い。
コンテナの作成(実行)
> docker run -it -p 80:80 -v C:\[コンテナにマウントしたいホストマシンのディレクトリ]:[コンテナ内のディレクトリ] --name="[コンテナ名]" [image名]:[タグ名] bash
オプション | 説明 |
---|---|
-d | コンテナをバックグラウンドで実行する。(いきなり接続したくない場合に使える) |
--ip="" | コンテナのIPアドレスを指定できる |
-m | メモリ上限の指定 |
--name="" | コンテナに名称をつける |
-p | コンテナのポートをホスト側に公開 |
--rm | コンテナ終了時、自動的にコンテナを削除する |
-v | ホストマシンのディレクトリをコンテナにマウントする |
コンテナの開始、停止
> docker start [コンテナID]
> docker stop [コンテナID]
[コンテナID]の部分は、[コンテナ名]でもOK。
コンテナへの接続、離脱
コンテナへの接続
> docker attach [コンテナID]
[コンテナID]の部分は、[コンテナ名]でもOK。
コンテナからの離脱
キーボード操作 ctrl + P, ctrl + Q
離脱すると、ホストマシンのコマンドに戻ってくる。
コンテナからDockerイメージを作成する
> docker commit [コンテナID] [イメージ名]:[タグ名]
Dockerイメージやコンテナの削除
イメージの削除
> docker rmi [イメージID]
コンテナの削除
> docker rm [コンテナID]
[イメージID][コンテナID]は、それぞれ[イメージ名:タグ][コンテナ名]でもOK。
その他
既存imageのタグを変更する
> docker tag [コンテナID] [イメージ名]:[タグ名]
[コンテナID]の部分は、[コンテナ名]でもOK。