Dockerを今更ながら触ってみることにした。
Dockerは日々ツールの名前が変わっていたり、
色々と更新されているので、この記事も数カ月後には古くなっていて使えないかもしれない。
あくまで個人の備忘録として残しておく。
なお、私の環境はMac OSX El Capitanである
やること
- "Dcoker for Mac"をダウンロードし、
- "Get Started Tutorial"にて基本的なことをまずは実施してみる。
#Get Started with Docker for Mac
なお、以前はDocker Toolboxを入れて使う、という記事をよく見かけるが、
私が入れたのはDocker for Macであり、違いについては下記の記事にかかれている。
※英語で書かれているが、画像もあるので理解はしやすかった。
VirtualBoxを使わずに、Hypervisor.framework上に構築された、
軽量なmacOS環境の仮想ソリューションのHyperKitを使っていたりしているみたい。
HyperKitという単語も初めて知ったので、後で調べてみよう。
Docker for Macをインストール
といっても、特に書く必要もない。
こちらのページから
インストール用のバイナリを落として、実行するだけ。
インストール後の自身の環境メモ
docker --version
Docker version 1.12.1, build 6f9534c
$docker-compose --version
docker-compose version 1.8.0, build f3628c7
$docker-machine --version
docker-machine version 0.8.1, build 41b3b25
nginxをdocker上で動かしてみる
"Get started"のページに書かれている内容をそのまま試す。
docker run -d -p 80:80 --name webserver nginx
localhostにアクセスすると、nginxが起動しているのが分かる。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2a3bc9f91988 nginx "nginx -g 'daemon off" 5seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, 443/tcp webserver
nginxを停止させる。
docker stop webserver
webserver(nginx)を削除する
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest e43d811ce2f4 2 weeks ago 181.5 MB
# 下記のコマンドで削除できる。
docker rm -f webserver
が、この方法だとnginxのimageまでは削除されない。 これはDocker hubから再びそれらをpullする必要がないようにするため。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest e43d811ce2f4 2 weeks ago 181.5 MB
もしこのimageごと削除する場合は、下記のコマンドで削除できる。
なおドキュメントには"docker rmi
docker rmi nginx
一旦ここまで。
hello-worldのimageが削除できない
余談だが、"Get started"の中に "docker run hello-world"を実行する項目がある。 試しに実行した後、imageを削除しようとすると下記の用にエラーとなる。
docker rmi {hello-world:image id}
Error response from daemon: conflict: unable to delete {hello-world:image id} (must be forced) - image is being used by stopped container {hello-world:container id}
普通に"docker ps"を実行すると、何も表示されないが、下記のように"-a"でコマンドを打つと、hello-worldのプロセスが見える。
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3bf725ebedc hello-world "/hello" 19 minutes ago Exited (0) 19 minutes ago angry_swanson
下記のコマンドでhello-worldのプロセスを削除する
docker rm -f angry_swanson
その後、下記コマンドでimageを削除可能。
docker rmi {hello-world:image id}
たぶん最初触った時ならではのエラーだろうけど、一応こういうことがあったということもメモしておく。