いつも入門するときに、なぜかうまくいかなそうなことをやってしまう人です。
仮想マシン上でコンテナを使ってみることはできると思うのですが、やってみました(これやるまえにかいてる)多分ネットワークがらみで死ぬ
何をするか
- kvm上にubuntu 14.04を作る -> docker-vm
- docker-vmにdocker.ioをインストール
uvtoolsでdocker用のマシンをデプロイ
ubuntu 14.04で利用できるuvtools(uvt-kvm)を使いました。kvm+libvirt上でOSのisoイメージを使ってマシンのセットアップ/インストールをするのではなく、クラウドで使われるようなubuntuのイメージをダウンロードして動かせるようにしてくれるらしいので非常に便利だと思います。
以下のリンク先でセットアップできます。
第344回 uvtoolでKVM/libvirt向け仮想マシンをお手軽に構築する:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
もちろん、libvirtでセットアップするのも問題ないはずです。
dockerをインストール
ここの通りにやってみます Ubuntu - Docker Documentation
14.04なので一番上のものを。今回はubuntuのメンテナンスされているリポジトリを利用しました。
これでインストール終わり
dockerを使ってみる
さくらクラウドの記事を参考にしてみる
Dockerで使うサーバサイドソフトウェア(エンジニア編) - さくらのナレッジ
まずお馴染みのHello World
ubuntu@docker-test:~$ docker run ubuntu /bin/echo hello world
2015/03/07 00:34:49 Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied
へ?? rootじゃないとだめ?
ubuntu@docker-test:~$ sudo docker run ubuntu /bin/echo hello world
hello world
でした。この話はDocumentsにもあって
Ubuntu - Docker Documentation - Giving non-root access
sudo付けたくないなら、実行中のユーザーをdockerグループに追加しないといけない。してもいいけどとりあえず面倒になるまではそのまま
さくらのナレッジを見て写経
練習も兼ねてさくらクラウドの内容をそのまま写経してみましたが、のっけから動かなくて
Dockerで使うサーバサイドソフトウェア(エンジニア編) - さくらのナレッジ
kvm上のマシンでdockerを動かそうとすると面倒
ちょっと面倒ですが、自分がどうさせた時点でネットワークはこうなってて(IPは適当です)
> [mac:192.168.100.10]
> |
> [kvm-host:192.168.100.100]
> |
> [docker-vm:192.168.122.10]
> (NWは192.168.122.0/24)
> |
> [docker-container-machine:172.17.0.7]
> (NWは172.17.0.0/16)
と言った風に多段になってます。そのおかげで、dockerで起動したネットワークのサービスへアクセスするのが面倒と思われます。
そういうこともあってか、以下のエラーが
ubuntu@docker-test:~$ sudo docker run --name redmine -d -p 80:80 sameersbn/redmine
...[中略]...
2015/03/07 07:42:00 Error response from daemon: Cannot start container d7838863da1d53a7fa1cbf6dcc264e822209b5f18e707ca329d019b6084c8627: port has already been allocated
macから直接dockerへアクセスする方法は面倒そうです。多段でポートフォワード打たないといけないし。dockerのネットワークへルーティングさせたほうがいいのかな。
atmarkの記事も見る
いまさら聞けないDocker入門(2):ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方 (1/3) - @IT
本当に今さら聞けない気分 ^^;
この辺のdocker runなども実行はしているものの動作せずでした。この環境だと壁に当たること多い。
トラブルシューティング
dockerのいらないimageを消そうとして “cannot delete [image id] because the container [container id] is using it" と出て削除できない
dockerのimage消そうかなと思って docker rmiをすると以下のエラーが出てくる時がある
Error response from daemon: Conflict, cannot delete 743011f71790 because the container 417c9349bf04 is using it (docker untagged the image), use -f to force
2015/03/07 02:06:43 Error: failed to remove one or more images
ps で確認してもこのimageを使ってるコンテナー出てこないよ? その場合、裏でこのimageを使ってるcontainerがあるらしいので、docker ps -aで確認して、ID指定でコンテナーをrmして、最後にimageをrmiする。 わからずコマンドを叩いてるとまず当たりそうな感じのエラーですかね。runの-dオプションを実行しまくるとこうなるはずです。
Can't delete images - Google グループ
docker ps -aをすると裏で動いている?ものがたくさん出てくる
ubuntu@docker-test:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
417c9349bf04 sameersbn/redmine:latest /app/init app:start 4 minutes ago redmine
4df18f7ed439 2d24f826cb16 /bin/echo hello worl About an hour ago Exited (0) About an hour ago goofy_meitner
3e996358137d 2d24f826cb16 /bin/bash About an hour ago Exited (0) About an hour ago tender_rosalind
c018a52a3e0e 2d24f826cb16 /bin/bash About an hour ago Exited (0) About an hour ago stoic_bardeen
ps -aで表示させて、CONTAINER IDを指定してrmする
sudo docker rm 3e996358137d
sudo docker rm c018a52a3e0e
最後に、docker rmi
sudo docker rmi 2d24f826cb16
続きます
kvm上でも触る程度なら問題なかったのですが、ネットワークサービスを動かすとき にアクセスしづらい(というかまだ出来てない)ので、Mac OS + parallelsのboot2dockerを使ってdockerしたいと思います。 ということで続きます。