こんにちは、hachi8833です。アドベントカレンダー3日目です。
半年ほど前からなぜかDocker for Macが起動できなくなってしまい、issue #1760にも音沙汰がないので、仕方なく緊急避難として素のDockerをHomebrewでインストールしました。
本来なら正規版であるDocker for Macを使う一手なのですが、やむを得ずdocker-toolboxを使うことにしました。一応docker-toolboxは一応現在もメンテはされているようですが、条件を満たせないMac向けのソフトウェアなので、その点ご了承ください。
docker pull
できるようにするのが目標です。
追伸: MacbookをクリーンインストールしたらDocker for Macを正常にインストールできました。
必要なもの
- Mac OS X (High Sierra使用)
- Homebrew -- リンク先の「インストール」に貼ってあるシェルスクリプトでインストールできます
- VirtualBox --
brew cask install virtualbox
でインストールしました
コマンドはいずれもbash用です。
インストール手順
1. VirtualBoxとdocker-toolboxのインストール
- caskでVirtualBoxとdocker-toolboxをインストールします。ハイフンをお忘れなく。
$ brew cask install virtualbox docker-toolbox
やってみると、docker-toolboxをインストールすればdocker本体やdocker-machine、docker-composeなども全部インストールされたので、brew install docker docker-machine
は不要でした。いつの間にか随分楽になりました。
バージョンを確認しておきます。
$ docker --version
Docker version 17.10.0-ce, build f4ffd25
$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac21
$ docker-machine --version
docker-machine version 0.13.0, build 9ba6da9
2. Docker-machineのセットアップ
HomebrewでDockerをインストールすると、brew services
でdocker-machineを管理できます。
$ brew services list
Name Status User Plist
postgresql started hachi8833 /Users/hachi8833/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
docker-machine stopped
memcached stopped
nginx stopped
mysql stopped
brew services start docker-machine
を実行し、docker-machineを起動します。以後docker-machineは常駐します。-
Dockerを初めて使う場合はVirtualBoxに仮想マシンを作成しておきます。名前は自由に付けられますが、ここでは
default
にしておきます。
$ docker-machine create --driver virtualbox default
docker-machine ls
で仮想マシンが作成されたことを確認します。
$ docker-machine ls # 仮想マシン一覧表示
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v17.10.0-ce
なお、この時点で仮想マシンにsshでログインすることもできます。
$ docker-machine ssh
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.10.0-ce, build HEAD : 34fe485 - Wed Oct 18 17:16:34 UTC 2017
Docker version 17.10.0-ce, build f4ffd25
docker@default:~$
- 次のコマンドで、その仮想マシン用の環境変数を設定します。Dockerの利用頻度が高いのであれば、.bashrcに書いておくとよいでしょう。
eval $(docker-machine env)
おまけ1: docker pull
してみる
ここまで終わればdocker pull
できるようになっているはずです。この間のPostgreSQL 10記事を元にPostgreSQL 10のDockerイメージをpullして動かしてみました。
$ docker pull postgres:10
$ docker run --name new-postgres -d postgres:10
以下でPostgreSQL 10にログインできます。
$ docker run -it --rm --link new-postgres:postgres postgres:10 psql -h postgres -U postgres
Dockerイメージとコンテナを表示してみます。
$ docker images # イメージ一覧
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres 10 599272bf538f 13 days ago 287MB
$ docker ps -a # コンテナ一覧(停止しているものも含む)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
636a1f9212c0 postgres:10 "docker-entrypoint..." About a minute ago Up About a minute 5432/tcp new-postgres
やっとDockerが帰ってきた...
おまけ2: イメージとコンテナを削除する
確認できたのでイメージとコンテナを削除します。
$ docker stop 636a1f9212c0 # コンテナを停止
$ docker rm 636a1f9212c0 # コンテナを削除
$ docker rmi postgres:10 # イメージを削除
イメージやコンテナ以外も全部きれいにしたいときは以下を実行します。
$ docker system prune