这里主要记录一下docker container 一些有意思的用法。
Version Release
可以将源码封装到 docker(tag) 或者 helm chart 中,通过check-in pre/post-CI/CD pipeline 发布,然后在 K8s or Jenkins pipeline 中使用,这样整个流程就非常规范,易于管理。
Run in Background
之前一直通过更改--entrypoint
为/bin/sh
加上 -c "tail -f /dev/null"
的方式,使容器在后台running,其实可以默认使用 -d
(detach) 的方式,但必须了解entrypoint/cmd的设置,比如:
1 | # the busybox build with CMD ["sh"], here it run as default sh |
Wrap Dependencies
把一些需要依赖的tool build到docker image中,然后运行docker container去工作,把需要处理的资源mount到container中: 比如 helm linter cv:
1 | docker run --rm -it \ |
Logs may also be captured by passing an additional volume: -v ~/path/to/logs:/tmp/cv
再比如jsonnet,搭建本地运行环境比较困难:
1 | # check jsonnet help |