Dockerをドカッと触ってみた(Macで)
Dockerが0.8でMac OSXのサポートをしたみたいな事をどっかでみたので、思考を停止してやってみた。触ってみただけなので全然ドカッと触れてない事に留意してください。言ってみたかっただけです。
あ。あけましておめでとうございます。
http://blog.docker.io/2014/02/docker-0-8-quality-new-builder-features-btrfs-storage-osx-support/
Dockerはそれまでは、Dockerを動かすためのVagrantfileを配布していて、VagrantでVM起動、そのVM上でdockerを使ってくれよな!よろしくー!的な感じだった。
それがMac上から直接dockerコマンドを使えるようになったぜ!ヒャッハー!ていう話らしい。
0. 前提
- Mac OSX 必要
- virtualboxが必要
1. boot2dockerとdocker client をセットアップ
マニュアルとほぼ同じような事をやる
$ cd /usr/local/bin $ curl -o boot2docker https://raw.github.com/steeve/boot2docker/master/boot2docker $ chmod +x boot2docker $ curl -o docker http://get.docker.io/builds/Darwin/x86_64/docker-latest $ chmod +x docker $ export DOCKER_HOST=tcp:// $ boot2docker init $ boot2docker up # コマンド一覧の確認 $ boot2docker
2. dockerコマンドを叩く
既にこの時点でdockerが利用可能になってる
# versionの確認 $ docker version Client version: 0.8.0 Go version (client): go1.2 Git commit (client): cc3a8c8 Server version: 0.8.0 Git commit (server): cc3a8c8 Go version (server): go1.2
3. ssh出来るコンテナを作る
完全に目的なくセットアップしてたので何していいか分からなくなった
http://blog.ryotarai.info/blog/2013/07/25/docker-sshd-container/
とりあえずココを参考にsshできるコンテナを作成する。
下記のようなopenssh-serverをインスコしてsshdを立てて、rootてパスでログインできるようなイメージを作成する「Dockerfile」を置く
FROM ubuntu:12.04 MAINTAINER tell-k "ffk2005@gmail.com" RUN apt-get update RUN apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN bash -c 'echo "root:root" | chpasswd' CMD /usr/sbin/sshd -D EXPOSE 22
ビルドする
$ docker build ./ Uploading context 1.842 GB Uploading context Step 0 : FROM ubuntu:12.04 ---> 9cd978db300e Step 1 : MAINTAINER tell-k "ffk2005@gmail.com" ---> Using cache ---> f39bc83bc3a1 Step 2 : RUN apt-get update ---> Using cache ---> 43349868d941 Step 3 : RUN apt-get install -y openssh-server ---> Using cache ---> 71e6832c0d64 Step 4 : RUN mkdir /var/run/sshd ---> Using cache ---> 14d8d5b361c1 Step 5 : RUN bash -c 'echo "root:root" | chpasswd' ---> Using cache ---> d1ccd560aa9e Step 6 : CMD /usr/sbin/sshd -D ---> Using cache ---> fdf4c6068540 Step 7 : EXPOSE 22 ---> Running in 2b0a51afe8e3 ---> 4aa9bed82ea4 Successfully built 4aa9bed82ea4
ビルドしたイメージをtagとして保存する
$ docker tag 4aa9bed82ea4 tellk/sshd
よーしパパ。コンテナつくっちゃうぞーハハハー。なんつってコンテナ作る
$ docker run -d -p 22 tellk/sshd a1023b856c14286886e44485435cfda51d6f35a31c48a5fe76ccbac7aac9d3c3
コンテナIDから、SSHすべきportを調べる
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1023b856c14 tellk/sshd:latest /bin/sh -c /usr/sbin 50 seconds ago Up 48 seconds 0.0.0.0:49154->22/tcp evil_franklin $ docker port a1023b856c14 22 0.0.0.0:49154 # 49154にSSHすればいいらしい
4. sshで繋いでみる
まずはMac -> boot2docker_vmにsshする
# とりあえず鍵作成 $ ssh-keygen -t rsa # なんやかんや聞かれるのでnopassで鍵を作成して、 # 下記のような感じで、鍵を置く。 ~/.ssh/id_rsa_boot2docker_vm ~/.ssh/id_rsa_boot2docker_vm.pub # 公開鍵をboot2docker_vmにコピー $ ssh-copy-id -i ~/.ssh/id_rsa_boot2docker_vm.pub localhost -p 2022 # パスが求められる「tcuser」がデフォのパス # ~/.ssh/configに以下を追加 Host localhost User docker StrictHostKeyChecking no UserKnownHostsFile /dev/null IdentityFile /Users/tell_k/.ssh/id_rsa_boot2docker_vm HostName 127.0.0.1 # sshをしてみる。パス無しでログインできる。 $ ssh localhost -p 2022 # boot2docker ssh でも パス無しでログイン可 $ boot2docker ssh
boot2docker_vmにログインしたらコンテナが起動してるIPを調べる
docker@boot2docker:~$ ifconfig | grep -A4 docker0 docker0 Link encap:Ethernet HWaddr FE:17:B0:FF:B4:70 inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::a055:fff:fe78:9134/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 # 172.17.42.1 として起動してるらしい
IPとポートが分かったんで、boot2docker_vm -> Dockerコンテナ(192.17.42.1:49154) にsshする
docker@boot2docker:~ $ ssh root@172.17.42.1 -p 49154 # passは「root」になってる root@172.17.42.1's password: Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.12.1-tinycore64 x86_64) * Documentation: https://help.ubuntu.com/ Last login: Sun Feb 9 13:44:12 2014 from 172.17.42.1 root@a1023b856c14:~# # 無事にログインできたぽい
こんどはSSHポートフォーディングで Mac -> (boot2docker_vm)-> Dockerコンテナ(192.17.42.1:49154) 的な感じでMacからDokcerコンテナに直ログインする。
# Macに戻って ~/.ssh/configを以下の内容を追加 Host container01 ProxyCommand ssh localhost -p 2022 nc %h %p StrictHostKeyChecking no User root Port 49154 HostName 172.17.42.1 # これで直接 Dockerコンテナにログインできる $ ssh container01 # ここでもパス入力省きたいから、boot2docker_vmと同じ公開鍵をコンテナに設置する。 $ ssh-copy-id -i ~/.ssh/id_rsa_boot2docker_vm.pub container01 # 上のssh-configに下記一行追加 IdentityFile /Users/tell_k/.ssh/id_rsa_boot2docker_vm # これでnopassで鍵つかってsshできる $ ssh container01 root@a1023b856c14:~#
とりあえず終わり
まとめ
参考
- http://blog.docker.io/2014/02/docker-0-8-quality-new-builder-features-btrfs-storage-osx-support/
- http://japan.internet.com/busnews/20140207/4.html
- http://docs.docker.io/en/latest/installation/mac/
- http://apatheia.info/blog/2013/06/17/docker/
- http://deeeet.com/writing/2013/12/08/docker-cheat/
- http://2013.8-p.info/japanese/04-01-perl.html
- http://the.nyarla.net/post/73770010276
- http://blog.udcp.net/2013/11/06/docker-0-6-5%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%82%92%E8%BF%BD%E3%81%86/
- http://qiita.com/ta9to/items/7bd8a1ab86b7fa949d50
- http://qiita.com/toyama0919/items/b4249d910a5ece927208
- http://qiita.com/sasaplus1/items/ac3c59293b432bc10db4
- http://qiita.com/kanekoa/items/cf3cabb23da69c609002
にゃーん