DockerをMacに入れて、Docker入門を果たす
Dockerコマンドが使える環境をMacで構築します。ついでに基本的な操作も確認します。結構あっという間にできます。
macOS用のパッケージマネージャーであるHomebrewがインストールされている前提で進めます。インストールされていない方は、macOSにHomebrewをインストールしてから以降を進めてください。
docker-for-macをインストール
まず、docker-for-macというアプリケーションが必要です。こいつはMac上の普通のアプリケーションなのでブラウザから直接落として解凍しても良いのですが、せっかくなのでhomebrewのcaskを使用してインストールします。
homebrew-caskは非常に便利な代物なので、知らない方はぜひこの機会に使ってみてください。
brew cask install docker
open /Applications/Docker.app
以上が完了したら、公式のGet startedをやってみましょう。
以下でも、軽くその内容をさらいます。やる際ですが、dockerコマンドチートシートを見つつ、それが何を意味するのかを調べながらやると、大体雰囲気が理解できます。docker
コマンドを使用する際は、オプションとして何が指定されているかがすごく関わってくるので、そのオプションが何を意味するのかきちっと調べておいたほうがいいです。
初めてのDocker
DockerでHello World
docker run hello-world
docker image ls
docker run hoge
で、"hello world"イメージを引っ張ってきて、それをコンテナとして起動しました。docker image ls
とすることで、ローカルにインストールしたイメージ一覧が確認できます。この記事を書いている途中に知ったのですが、docker image ls
と docker images
は別物であることに少し注意します。
nginxサーバーを立ち上げてみる
docker run --detach --publish=80:80 --name=webserver nginx
# http://localhost/ にアクセスすると、nginxのwelcome pageが見える
# `docker run -d -p 80:80 --name webserver nginx`でも同じ意味
docker ps
# プロセスが動いているのが確認できる
docker stop webserver
# これで、NAMESがwebserverのプロセスを終了させることができる
docker ps
# 何もプロセスが動いていないのが確認できる
--detach
オプションを指定することで、バックグラウンドで実行させることが可能です。また、-p 80:80
はポート番号を表しており、"外部からアクセスされるポート番号:コンテナ側のポート番号"となっています。つまり、-p 3000:80
であれば、ホストしているPC(つまりあなたのMac)上の3000番ポートにアクセスすると、nginxコンテナ上の80番にフォワーディングされる(URLでいうリダイレクトのようなもの?)ということです。
動いているコンテナをストップさせるにはそのまま、docker stop
。
コンテナを削除してみる
docker ps -a
# プロセスが終了しているコンテナも含めて確認できる
docker rm webserver
# コンテナを削除する
docker ps
では動いているコンテナしか確認できませんが、docker ps -a
とすることでプロセスが終了しているコンテナも含めて確認することができます。docker rm CONTAINER_NAME
でコンテナを削除できます。
イメージを削除してみる
docker image ls
# ローカルにインストールしたイメージ一覧が確認できる
docker image rm nginx
# nginxのイメージをローカルから削除する
docker image rm hello-world
# エラーが出て削除できない。これは、コンテナがこのイメージを使用しているために起こる。
docker ps -a
# hello-worldイメージを使用しているコンテナのNAMESを確認
docker rm adoring_minsky
# コンテナを削除。NAMES(ここでいう"adoring_minsky")は個々で違うので注意
docker image rm hello-world
# 今度は正しく削除できる。`docker rmi hello-world`でも同じ意味になる
イメージがコンテナで使用されている場合には削除できません。docker ps -a
で動いていないコンテナを確認して、その削除のあとにイメージを削除する必要があります。
また、使ってないイメージやコンテナの削除には、prune
コマンドでやるのが楽なようです。最初のうちはコンテナ作って壊してを多く経験するのが楽しいので、そのあとの掃除はこのprune
コマンドで済ませましょう。
docker daemonをログイン時に自動で立ち上げるのをやめる
コンソールにtop -o mem
と入力してPCのプロセスを確認するとわかりますが、docker for macは結構メモリを食うので、そこまで使用しない人は自動で起動はさせない方が良いです。
自分はフロントエンドエンジニアで、現在の状況ではそこまで頻繁には触らないため、自動で立ち上げるのをやめました。docker-for-macのpreferencesより行えます。