Spica*

プログラミングの話。

Docker使った

Mac上のVagrantに「Official Ubuntu 14.04 64bit」のイメージを入れて起動し、そこにdockerを入れて試すことにした。

Qiitaで注目されていた、Dockerハンズオン資料 - Qiita を中心にやってみた。

インストール

僕はニフティクラウドではないので、インストールは公式の手順で行なった。最初32bitのイメージを間違えて入れていたのでエラーでたけど、64bitのUbuntuだとちゃんと動作。

覚えておくポイント

  • 一般ユーザからだとsudoしてばっかになので$ sudo su -してroot化していろいろ試すとよさげ。(本番環境ではやめたほうがいいかもしれないけど)
  • # docker run -i -t ubuntu /bin/bash を打つと、自動的に最新版のubuntuをpull(ダウンロードみたいな感じ?)して、コンテナを起動、さらに/bin/bashシェルに対してinteractiveモードで接続してくれる。
    • # docker run ubuntu /bin/echo "Hello World"みたいなのも可能
    • -i -t-itとか-tiの省略が使える
  • 上記のようにDockerコンテナ上のシェルを立ち上げた状態で、別のシェルから# docker psすると実行中プロセス一覧に実行中のコンテナがでる。
  • # docker commit <Container ID> <Tag>は、interactiveモードを終了して、# docker psで何も表示されなくなった後でも有効
  • コンテナとホストのポートをつなぐ場合は# docker run -i -t -p 80:80 <保管したimage名(REPOSITORY)> /bin/bashと言った感じで明示しないといけない
  • コンテナのエクスポート:# docker export 011d4e7c710a > nifty.tar、インポート# cat nifty.tar | docker import - nifty

途中で出た問題とか

/var/run/docker.sock: permission denied

vagrant@vagrant-ubuntu-trusty-64:~/Dev/docker$ docker run ubuntu /bin/echo 'hello world'
2014/08/27 03:32:48 Post http:///var/run/docker.sock/v1.14/containers/create: dial unix /var/run/docker.sock: permission denied

一般ユーザで、 sudo つけ忘れてdockerコマンド実行したら出た。

unable to locate package lxc-docker

間違えて32bit OSで実行してた。Dockerのインストールに失敗する(unable to locate package lxc-docker) | too young to die , too drink to live

一時的に抜けるショートカット ctrl+p, qが使えなかった

(ctrl +p , q で一時的に離脱)ってあるけど、動作しなかった。MacからVMへのSSHでやってるからかな。boot2dockerだとちゃんと動作するのかも?

途中で出たnyancatのdocker image

イメージを公開するための Docker Hubっていうのがあって、コンテナを作った後、そこ経由で自由に公開できるみたい。

supertest2014/nyan Repository | Docker Hub Registry - Repositories of Docker Images