私自身はWindowsとMac両方のOSを使っていますが、PC内にそのまま開発環境を作ろうとすると色んなソフトウェアでごちゃごちゃして管理が大変ですし、使わなくなったツールやゴミファイルが貯まってクリーンインストールしたくなります。そこで出てくるのが「仮想環境」で、VMWare等の仮想環境の構築ツールを使えば、OS内に疑似的な新しいOSを作る事ができますし、要らなくなったら削除することもできて非常に便利です。
VMWare等は確かに便利なのですが、問題点としてOS単位で環境を作るためパワーが必要で、メインとなるホストPCのリソース不足を引き起こしてしまう事、そして起動に時間がかかってしまう事です。そこでこの問題を解決してくれるのが今回記事にしている「Docker(ドッカー)」等のコンテナ技術と言われるものです。
・Docker:今回利用するコンテナ技術の一つです。
・Dockerエンジン:ホストPC上で動作するDockerコンテナを動作・管理するためのものです(今回は「Docker for Windows」をインストールします)
・Dockerイメージ:Dockerコンテナを作成するための元となるOSやミドルウェアのイメージと言われるファイルです。
・Dockerコンテナ:ホストPCのプロセスとして起動するコンテナと言われるデータです。
・DockerHub(ドッカーハブ):Dockerイメージを取得することができるサービスです。様々なOSやミドルウェアが異なるバージョンで準備されていて、誰でも利用できます。
・Dockerfile(ドッカーファイル):DockerイメージやDockerコンテナをインストールするための手順書・設定ファイルのようなファイルです。
・ホストPCのプロセスとしてOSやミドルウェアを複数同時実行できる(apacheとmysqlとか)
・起動が速く自動化もできるので、開発環境やステージング環境として扱いやすい
・「DevOps(デブオプス)」や「マイクロサービス」が実現できる
今回は表題の通りWindowsに導入しました。DockerはMacやLinuxでの導入がほとんどですが、現バージョンのDockerはWindows10(64bit Windows 10 Pro, Enterprise)であれば動作するとの事で要件を満たしていたためです。
https://docs.docker.com/docker-for-windows/install/
まずは上記サイトから「Docker for Windows」のStable channel(安定版)をダウンロードしてインストールします。PCの再起動などもしつつ、インストールが完了するとDockerのサービスが起動するのでタスクバーにでも常駐させてください。
※アイコンをマウスオーバーして「Docker is starting」と出れば起動準備中、「Docker is running」と出れば起動中です。
あとはコマンドプロンプトで動作確認(バージョン確認)ができれば準備完了です。
C:\User\hoge> docker version
DockerHubにて取得したいイメージがあるかどうか検索できます。
C:\User\hoge> docker search ruby(イメージ名など)
DockerHubから取得したいイメージを指定してpull(プル)します。
※バージョンを指定せず「ruby」とすればlatestのイメージが取得できますが、管理の都合からバージョンは指定した方が良いです
C:\User\hoge> docker pull ruby:2.2.2
取得済みのイメージをリストを表示します。
C:\User\hoge> docker images
不要なイメージを削除します。
C:\User\hoge> docker rmi ruby(イメージ名:REPOSITORY)
取得したイメージ(未取得なら新規にpullされます)を使ってコンテナの起動。
以下の例の場合は「d:バックグラウンド起動」「p:ポートフォワード(ホストの8888ポートをコンテナの80ポートにフォワード)」「v:ボリュームのマウント(ホストの指定ディレクトリをコンテナの指定ディレクトリにマウント)」で「httpd(apache)」を起動
C:\User\hoge> docker run -d -p 8888:80 -v C:\Users\hoge\project\htdocs:/usr/local/apache2/htdocs httpd
現在のコンテナを確認します(-aオプションで起動していないコンテナも含む)
C:\User\hoge> docker ps -a
指定のコンテナを停止します。
C:\User\hoge> docker stop コンテナ名(NAMES)
指定のコンテナを停止状態から再開します。
C:\User\hoge> docker start コンテナ名(NAMES)
指定のコンテナを削除します(削除前には停止してください)
C:\User\hoge> docker rm コンテナ名(NAMES)