英語嫌いなりにDocker for Macに挑戦したメモ。
書いておかないと絶対に忘れるのでメモ。
英語苦手マンなので途中翻訳ソフトに頼ってます。
参考記事
Mac OS X へのDockerのインストール方法(※Qiitaの記事です)
インストール
記事通り、Get started with Docker for Macを見に行きます。
上記記事の中で、「Mac用のDocker手に入れてないならInstall Docker for Macで手に入れろ」という指示があるので、その通りにします。
とりあえずEl Capitan以上のMacなら大丈夫な気がしました。
Yosemiteは制限がかかるみたい?
2つのchannel(Stable channel、Edge channel)があります。
多分Stableの方が安定版そうなのでそちらを手に入れました。
リリースは四半期に1回だそうです。
使用統計とその他のデータを送信するかを選択できるとのこと。
※インストール後の設定で、「Send usage statistics」がチェック入ってたのでそれかと思います。
このどちらもに「Docker Engineの実験的機能」がついているようです。
「運用中のアプリで使う場合は切れ」とのことです。
どれなのかは知りません…。
インストールしました。
バージョンチェック
再びGet started with Docker for Macに戻ります。
docker
,docker-compose
,docker-machine
のバージョンを確認しろとのこと。
$ docker --version
$ docker-compose --version
$ docker-machine --version
試してみる
Get started with Docker for Macの続き。
試しにやってみましょう的なのがあるので試します。
ターミナルでコマンド打てばいいっぽい。
dockerの動作を下記コマンドで確認。
$ docker version
あと次のコマンドを実施
$ docker ps
$ docker run hello-world
これでちゃんと動いているかどうかがわかるらしい。
hello-worldをrunして、下みたいなメッセージが出たらOK
Hello from Docker!
This message shows that your installation appears to be working correctly.
もっとしたい場合はこう。
nginxをポート80でやる?みたいなやつ。
$ docker run -d -p 80:80 --name webserver nginx
http://localhost
へ行けというのでアクセス。
出ない(´・ω・`)
どうしましょうね…。
と思ったら何回かやったらできました。
原因は不明ですが、ちょっと遅いみたいです。
で、この時点でdocker ps
をしていると、前述のコマンドのnameオプション
で指定したwebserver
が動いていることがわかります。
(コンテナ名がwebserverになっています)
どうやらrun
はコンテナを立ち上げてくれるようです。
nameオプション
でコンテナ名,
pオプション
でポートを指定できるようです。
dオプション
はバックグラウンドで起動だそうです。
参考:docker コマンド チートシート
コンテナの停止コマンド及びコンテナの削除コマンドを打たない限り、ずっと起動するようなので、停止してみます。
$ docker stop webserver
※再び始めるときはdocker start webserver
docker ps -a
を打つと、停止中のコンテナを含めて確認できます。
コンテナを削除をする場合、↓のように打つ。
※runコマンド実行時に同じコンテナ名があるとエラーになります。
$ docker rm -f webserver
これで消してもnginxのイメージは消えないそうです。
…イメージ?(別途調べて記事にするかも?)
いろんなサイトを斜め読みしてみましたが、
コンテナ:イメージを元に作られた環境
イメージ:コンテナの元
みたいな印象です。
そのイメージとやらの確認は
$ docker images
これ打って知りましたがhello-world
はイメージってやつのようです。
これが消えないのは、再利用するためみたいです。
(ない場合はDocker Hubからpullしてる?っぽいです多分)
イメージを消したい場合は、
$ docker rmi [イメージID or イメージ名]
イメージIDとイメージ名はdocker images
で確認できます。
今回はdocker rmi nginx
で実施しました。
これ以外にもサンプルがある様子。
困ったらやろう…。
Docker for Macの設定について
今回入れたのはStableなのでそれに関連するものだけ。
General
アプリの自動起動とか、バックアップとかの設定。
なんかEdgeリリースでは、DockerログインをMacOSキーチェーンに安全に保存するための追加オプションがあるらしいです。
Stableはなし。(無効にできない)
Start Docker when you log in
ログイン時にDockerを自動起動するようになっている。
セッションを開いた時にDockerを起動しない場合はチェックを外す。
今回は外しました。
Automatically chack for updates
アップデートを自動化するか(チェックすると自動アップデート)。
これはチェックしたまま。
Exclude VM from Time Machine backups
Time MachineがDocker for Macの仮装マシンをバックアップするかどうか(チェックするとバックアップするっぽい)。
これはデフォルトのまま、チェックしない。
とりあえずバックアップいらない。
Send usage statistics
Dockerに使用状況を送る。
とりあえず外しました。
File sharing
Mac上のどのフォルダとコンテナを共有するか。
よくわからないのでデフォルトままにしておきます。
とりあえずプロジェクトが/Usersの外にあるとダメなので、その場合は共有しろってことみたいです。
Advanced
CPUとかメモリとか決めるところ。
ディスクイメージの格納場所を選択できるようです。
まあ特にいじらなくていいかも。。。
Proxy
HTTPのプロキシ設定をするところ。
ここもとりあえずはいじらないことに。
Docker Daemon
Dockerデーモンのコンテナの実行時のオプションが設定可能。
(とりあえず英語読むの大変なので必要になったら読みます)
Uninstall/Reset
Dockerのアンインストールか、
初期インストールの状態に戻す。
DockerでWebページを動かすまで
参考
docker の nginx イメージの設定ファイルを眺めながら、独自ページを表示します。
dockerのコンテナにアクセスします。
(exec
がわからなかった…)
$ docker run -d -p 80:80 --name webserver nginx
$ docker exec -it webserver /bin/bash
/etc/nginx/conf.d/default.conf
でrootを確認する。
参考サイト通り/usr/share/nginx/html
がrootディレクトリであることを確認。
参考サイトではコンテナ内でHTMLファイルをいじってましたが、
ローカルで作ったものをコンテナに上げたいので、
一旦exit
します。
$ docker cp [ローカルファイル名] webserver(コンテナ名):[コンテナ保存先パス]
ワイルドカードは対応してないようです。
な、なんだってー(・o・)
もしかしたら
Git管理
→リモートリポジトリにpush
→コンテナexec
→コンテナ内でpull
とかの方が楽なのかも。
そのうちgitとか入れてやってみます。