wercker で使うために Docker を初めて使ってみました。
参考にしたサイト :
今更始めるDocker on Mac、今更覚えるDockerコマンド - 病みつきエンジニアブログ
Docker Machineの作成
1. Docker Toolbox をインストール
brew install Caskroom/cask/docker-toolbox
で Docker Toolbox をインストール。
brew install docker
ではなく、上記の全部入りパッケージをインストールするのが良さそう。
これで docker コマンドであれこれ出来るようになるのかと思いきや、
このままではまだ Cannot connect to the Docker daemon. Is the docker daemon running on this host?
というエラーメッセージが出るだけですので、
まずは仮想環境の設定から始めます。
2. docker コマンドが使えるようになるまで
docker-machine create --driver virtualbox docker-linux
今回は docker-linux という名前のマシン名にしましたが、ここはお好きなように。
(VirtualBoxのマシン名一覧がカオスにならないよう docker-*** みたいな名前つけるのがおすすめかな)
docker-machine start docker-linux
これで仮想環境が起動されました。
起動された仮想環境の設定を見ます。
docker-machine env docker-linux
私の環境では以下のように出力されました。
export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/nekonenene/.docker/machine/machines/docker-linux" export DOCKER_MACHINE_NAME="docker-linux" # Run this command to configure your shell: # eval $(docker-machine env docker-linux)
言われたように
eval $(docker-machine env docker-linux)
コマンドを実行し、環境変数を設定してあげます。
これで docker コマンドは動くようになったはずですから
docker images
とコマンドを打ってみます。
今は何も Docker イメージをダウンロードしていないので、以下の1行だけが表示されます。
REPOSITORY TAG IMAGE ID CREATED SIZE
3. Docker へのログイン
Docker のアカウントを取得したら、docker login
コマンドでログインします。
これをしないと docker pull
などがおこなえません。
docker login
ユーザーネームとパスワードが聞かれますので、登録通りに入力します。
ログイン作業が完了したら、
docker run -it hello-world
で、動作確認用の Docker イメージをダウンロードし実行してみます。
しばらく待ち、(自動的に docker pull hello-world:latest
がおこなわれたのち)
Hello from Docker! This message shows that your installation appears to be working correctly.
とメッセージが出てきて成功です。
docker images
とコマンドを打つと、以下のように Docker イメージがダウンロードされたことが確認できます。
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest c54a2cc56cbb 7 weeks ago 1.848 kB
4. Ubuntu trusty を入れてみる
Docker Hub には、さまざまな Docker イメージがあります。
あなたが Docker Cloud にパブリックで置いたものも、自動的にここで公開されています。
さて、今回は Ubuntu の公式リポジトリ を見てみましょう。
ここに書かれている 14.04
や trusty
や latest
などはすべてタグの名前です。
docker pull
の際、リポジトリ名だけでなくタグ名も指定できます。
ですから、Ubuntu の trusty
タグの Docker イメージを入れて実行する際は、
docker run -it ubuntu:trusty
とコマンドを打ちます。
これは docker run -it ubuntu:14.04
とコマンドを打つ場合と同じだと、
上の写真からわかりますね。
5. Docker イメージの削除
いろいろ入れたあとで docker images
を打ってみます。
REPOSITORY TAG IMAGE ID CREATED SIZE node latest 800da22d0e7b 6 days ago 651.4 MB ubuntu latest f8d79ba03c00 11 days ago 126.4 MB ubuntu trusty ff6011336327 11 days ago 188 MB hello-world latest c54a2cc56cbb 7 weeks ago 1.848 kB
このなかの node:latest と ubuntu:latest を削除したくなったとします。
そのときは docker rmi
コマンドを使います。
docker rmi -f 800da22d0e7b f8d79ba03c00
そのときに IMAGE ID を使うのですが、
実はこれは完全に記述する必要はありません。
一意に定まるのであれば
docker rmi -f 800 f8d
のようにコマンドしてもしっかり消えてくれます。
6. Dockerfile からのビルド
Dockerfile は例えば以下のように書きます。
文字コードの設定方法に関して、こちら↓の記事にお世話になりました。
Docker: コンテナのlocaleを設定したい
で、こう作った Dockerfile からイメージを作成するコマンドは、例えば以下のような感じ。
この Dockerfile が現在いるディレクトリから見て、config というフォルダの下に入っている場合、
docker build -t my-docker-image-name:v1.0 ./config
ここで気を付けるのが、指定するのは ./config/Dockerfile
と、Dockerfile のファイル名まででなく、Dockerfile があるディレクトリ名までを書くことです。
ファイル名まで書いてしまうと
unable to prepare context: context must be a directory:
とエラーメッセージが出て怒られます。
それから、ビルドが始まるまではけっこう時間がかかりますのでその点もお気をつけて。
何も表示が出ないから動いてないんじゃないかと心配になりますが、1分くらい待つと表示が始まります。