Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Docker(for Windows)で開発環境の構築を行う

Dockerとは

説明が下手なのでググってください。とてもわかりやすい説明がゴロゴロあります。

導入のメリット

  • 開発環境をコマンド一発でかんたんに構築できる
  • 複数人で開発するときに、環境の差が発生しなくなる
  • バージョン違いやミドルウエア違いなどの複数の環境を、一つのホストマシン上で実行できる
  • 本番環境もDockerで運用してしてしまえば、開発環境と本番環境との差が(ほとんど)なくなる

など

用語集

※「正確」より「わかりやすい」説明にしています。

用語 説明
コンテナ(container) 仮想OS…ではない。あたかも仮想OSが実行されているかのように動くプロセス。コンテナ同士は独立している。
Dockerイメージ(image) コンテナの元となるファイル。イメージからコンテナを実行する。また、コンテナからimageを作成することもできる。
Dockerfile Dockerイメージを作成するためのファイル。DockerfileをBuildすることで、Dockerイメージが作成できる。テキストで記述されており、共有が容易。ベースとなるOSや、そのOS上で実行するコマンドなどを記述しておく。DockerimageからDockerfileも作れなくはないが、
DockerHub GitHubのDocker版みたいなもの。Dockerimageを管理している

それぞれの関係(イメージ)

image.png

  1. Dockerfileからbuildして、Dockerイメージを作成する(複数のイメージを別名で作成可能)
  2. Dockerイメージをrunして、コンテナを実行する(複数のコンテナを別名で実行可能)
  3. コンテナをcommitして、Dockerイメージを作成する(複数のイメージを別名で作成可能)
  4. ローカルにあるDockerイメージをPushして、DockerHubにて管理する
  5. Dockerファイルや、そのコマンド実行で必要なファイル群をGitHub上で管理して、DockerHubとLinkすることで、GitHubのソースからDockerHub上でDockerimageを作成できる

Dockerイメージは、DockerHub上で公開されているリポジトリからpullしてくることで、ローカルマシン上で利用できるようにもなります。

Docker For Windowsの導入

詳しいことは、Dockerのホームページ、または日本語ドキュメントを参照してください。
ここでは一通りの手順を簡単に記載します。

要件

Windows10で、Hyper-Vホストが動作する環境であること(Windows10 homeはNGです)

手順

  1. Docker For Windowsをダウンロードしてくる。
  2. インストーラを実行する。
  3. Hyper-Vが無効となっている場合は有効にする。コントロールパネルの[プログラム]-[Windowsの機能の有効化または無効化]から「Hyper-V」にチェックを付ける。
  4. インストール完了を確認する。
バージョン確認
> docker version

出力結果
image.png
以上です。簡単ですね。

よく使うDockerコマンド

Dockerの一覧確認

dockerイメージの一覧
> docker images
コンテナの一覧
> docker ps [-a]
オプション 説明
-a 停止中のコンテナも含めて表示する

Dockerイメージの作成(取得)

日本語ドキュメント(build)

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イメージを作成する

日本語ドキュメント(commit)

> docker commit [コンテナID] [イメージ名]:[タグ名]

Dockerイメージやコンテナの削除

イメージの削除
> docker rmi [イメージID]
コンテナの削除
> docker rm [コンテナID]

[イメージID][コンテナID]は、それぞれ[イメージ名:タグ][コンテナ名]でもOK。

その他

既存imageのタグを変更する
> docker tag [コンテナID] [イメージ名]:[タグ名]

[コンテナID]の部分は、[コンテナ名]でもOK。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
35
Help us understand the problem. What are the problem?