再分享几个docker小技巧

再分享几个docker小技巧

pshu 码农英语课堂

1. MacOS docker 相关命令自动补全


非 mac 用户可以直接跳到下一个 tip。

首先你已经安装的了docker for mac,自然我们要先安装 bash-completion


brew install bash-completion

然后配置 .bashrc


if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

最后做下软链接就好了, 重启下 shell,感受下两下 tab 自动补全带来的快感。


cd /usr/local/etc/bash_completion.d
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion

2. 查看 docker build context 的内容


在构建 docker images的时候,我们可以通过合理的控制构建时的 context 来提高 image 构建的速度。当然首先我们会写 .dockerignore 来限制 context 中的内容。但是有时候我们还是想查看下 context 到底有哪些内容,还有没有压榨的空间。在 context 所在的目录,通过下面的 docker file 构建一个image,然后在运行 image,就可以查看当前的 context 的内容了。


FROM busybox
COPY . /tmp

但是每次总是要写这么一个 dockerfile 也挺麻烦的,大家可以做一个下面的 alias,就会愉悦很多。需要的时候执行 context-image 就行了。


alias context-image='printf "FROM busybox \nCOPY . /tmp\n" |  docker build -t context -f -  .'

3. 最后一点压箱底的东西,请笑纳


最后在分享几个P叔关于 docker 压箱底的东西。虽然安装好了自动补全已经方便了,但是总还有懒要偷的嘛。

快速的运行一个 docker image


function dockerimageshell(){
  docker run --rm -it $@  /bin/sh
}

比如用上一个 Tip 创建的 context image,用这个函数就可以快速查看;自己也加上 -v -p 等参数来控制下映射

dockerimageshell context

快速的进入一个容器 shell 中。


function dockercontainershell(){
  docker exec -it $1  /bin/sh
}

这里用容器的 hash 还是名字了什么,都可以快速的进入到容器的 shell 中。

清除 docker 的资源

最后一个大扫除下,比如我们刚才创建的 context image,查看完了就不要留在系统里面浪费空间了。下面的函数不仅清理没用的 image,各种 volumes network 统统帮你搞定。


function dockercls(){
  docker system prune
}

END

就这么三个小tips,希望对大家有用。

上一篇:论文阅读Anisotropic Convolutional Networks for 3D Semantic Scene Completion


下一篇:运行gulp任务,提示信息:Did you forget to signal async completion