再分享几个docker小技巧

210 阅读2分钟
原文链接: mp.weixin.qq.com

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_completionfi

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

cd /usr/local/etc/bash_completion.dln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completionln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completionln -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 busyboxCOPY . /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,希望对大家有用。