在这里,我使用nsenter解决问题。因为不熟悉go,也没时间去看基础,所以选择了这个比较简单的方法,因为以前做过LFS,对编译也挺熟悉。下载util-linux2.24:
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz \ | tar -zxf-cd util-linux-2.24./configure --without-ncursesmake nsentercp nsenter /usr/local/bin
到此,工具已经安装完毕,再运行一个容器测试下:
docker run -d -P training/webapp python app.py
通过解析JSON得到这个容器的PID值:
PID=$(docker inspect --format '{ {.State.Pid}}' my_container_id)
用上面提到的PID,进入容器:
nsenter --target $PID --mount --uts --ipc --net --pid
我已经可以在容器中进行操作了。
参考:http://jpetazzo.github.io/2014/03/23/lxc-attach-nsinit-nsenter-docker-0-9/