Docker導入
Docker for Macのインストール
今回はMacBook Pro(13-inch,Late 2016)にDockerのインストールを行いました。Windows環境でもインストールはできるそうですが色々と制約や問題がありそうだったので私はMBPにインストールを行いました。
導入にあたって、下記のページを参考にさせて頂きました。
https://minato-minato.com/?p=205
https://docs.docker.com/docker-for-mac/install/ からdocker for macをダウンロードします。 ダウンロードする際にアカウントを作成する必要があるみたいなので、今回は「Get Docker CE for Mac(Stable)」から安定版をダウンロードしました。
ダウンロードが完了したら実行してインストールを行います。
Dockerのインストール完了後、作成されたDockerアプリを起動します。 以下のコマンドでバージョンを表示し、インストールできていることを確認します。
> docker -v Docker version 18.06.0-ce, build 0ffa825
Dockerの利用方法
以下のコマンドでWebサーバのNginxがインストールされているDockerイメージを取得し、コンテナを起動できます。
> docker run --name example-nginx -d -p 8080:80 nginx
正常にコマンドが実行されると、ブラウザでhttp://localhost:8080/にアクセスして、NginxのWelcomeページが表示されます。
トラブル
私の環境では上記のコマンドでエラーが表示されました。
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
be8881be8156: Pull complete
32d9726baeef: Pull complete
87e5e6f71297: Pull complete
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Downloaded newer image for nginx:latest
e201538d3d74cea82075b3fdd51085c9b964e6175a3f35535d7d12e269076461
docker: Error response from daemon: driver failed programming external connectivity on endpoint example-ngnix (b1deb14828be88969e185c6218a335f6781920366aaf36c33ae05ba98cfb1d83): Error starting userland proxy: Bind for 0.0.0.0:8080 failed: port is already allocated.
エラー内容は既に指定したポートが使用されているため競合が起きているみたいです。
ポートの競合が起きているので指定したポートをオープンしているプロセスを下記コマンドで調べます。
> lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME VBoxHeadl 1062 Dr.R 18u IPv4 0x751b3bd4c170fc97 0t0 TCP *:http-alt (LISTEN)
lsofコマンドは、PortやPID、プロセス名からファイルがオープンしている情報を表示するコマンドで、-iオプションとポート番号を指定すると、そのポートを使用している情報が分かります。 上記の結果でVirtualBoxがポートを使用しているようでした。
N予備校の実習でVirtualBox上の仮想マシンで課題をやっているのが原因ですので、仮想マシンを終了させました。
その後、一旦dockerコンテナを削除します。 削除するために、現在動いているコンテナの確認を行います。
> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e201538d3d74 nginx "nginx -g 'daemon of…" 4 minutes ago Created example-ngnix
上記のコマンドでコンテナ名やコンテナIDがわかったら、下記のコマンドでdockerのコンテナを削除できます。
> docker rm xxxxxx(コンテナIDやコンテナ名)
そして再び、上記のdocker run~~コマンドでコンテナを起動して、ブラウザでNginxのWelcomeページが確認できました。
ちなみに使わなくなったdockerイメージは以下のコマンドで削除することができます。
#イメージの削除
docker rmi イメージ名またはイメージID
#イメージの確認
docker images
導入完了
これでDockerの導入が完了しました。 Dockerを導入してやりたいことがあったので、Dockerを導入してみたのですが結構簡単にできたと思います。まだ詳しい使い方や応用方法は分かりませんが、後々使いこなせていけたらと思います。