リベンジ: nsinit on boot2docker 

[docker - nsinit が上手く行かなくて困っていたら nsenter があまりにもあっさりだった件 - Qiita](http://qiita.com/yungsang/items/915f7c2ae6ccb239d5ee) から一週間、試行錯誤を繰り返すこと幾度か。

[RHEL/CentOS 6で Docker に nsinit/nsenter する - Qiita](http://qiita.com/comutt/items/2f873a0e7eaddd3f647e) で、タグを指定することを教えてもらい、再度試すもエラーが続く。

今日、Docker v1.1.0 を出たことをキッカケに最新のコードで再度試すも上手く行かず、悩んだ末、golang からインストールすることに。

これがなんと大正解！
コードのバージョンの問題＋`tce-load -wil go` でインストールされる go のバイナリのせいでもあることが判明しました。

以下成功した状態の Vagrantfile を残しておきます。
念の為、boot2docker v1.1.0~、libcontainer v1.1.0 に固定しました。

```ruby:Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "boot2docker-nsinit"

  config.vm.box = "yungsang/boot2docker"

  config.vm.box_version = ">= 1.1.0, <= 1.1.1"

  config.vm.provision :shell do |s|
    s.privileged = false
    s.inline = <<-EOT
      tce-load -wil compiletc 2> /dev/null

      echo "Installing go"
      cd /tmp
      curl -sOL http://golang.org/dl/go1.3.linux-386.tar.gz
      cd /var/lib/boot2docker
      sudo tar zxf /tmp/go1.3.linux-386.tar.gz
      export GOROOT=/var/lib/boot2docker/go
      export PATH=$PATH:$GOROOT/bin

      echo "Installing nsinit"
      cd $HOME
      export GOPATH=$HOME/go
      go get -d github.com/docker/libcontainer/nsinit
      cd $GOPATH/src/github.com/docker/libcontainer
      git checkout -B nsinit v1.1.0
      cd $GOPATH/src/github.com/docker/libcontainer/nsinit
      go install .
      sudo cp -f $GOPATH/bin/nsinit /usr/local/bin/nsinit

      echo "Installing docker-nsinit"
      cd $HOME
      curl -sOL https://raw.githubusercontent.com/YungSang/docker-attach/master/docker-nsinit
      chmod +x docker-nsinit
      sudo mv docker-nsinit /usr/local/bin/docker-nsinit
    EOT
  end

  config.vm.provision :docker do |d|
    d.pull_images "yungsang/busybox"
    d.run "simple-echo",
      image: "yungsang/busybox",
      args: "-p 8080:8080",
      cmd: "nc -p 8080 -l -l -e echo hello world!"
  end

  config.vm.network :forwarded_port, guest: 8080, host: 8080
end
```

```
$ vagrant up
$ vagrant ssh
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.1.0
             nfs+nsenter : e012f67 - Thu Jul  3 22:12:51 UTC 2014
docker@boot2docker:~$ docker ps
CONTAINER ID        IMAGE                     COMMAND                CREATED              STATUS              PORTS                    NAMES
4e5e685e7b4d        yungsang/busybox:latest   nc -p 8080 -l -l -e    About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   simple-echo
docker@boot2docker:~$ docker-nsinit 4e5e685e7b4d
cd /var/lib/docker/execdriver/native/4e5e685e7b4d4d02b1f36048638b6677b2d45af07362aeb123ad4767d45aa464 && nsinit exec -- /bin/sh
/ #
```

(ﾟ∀ﾟ)ｷﾀｺﾚ!!