当前位置: 首页 > 科技观察

两个码头工人使用神技,99%的人都不知道!

时间:2023-03-18 19:49:50 科技观察

最近发现了两个非常好用的工具,一个是runlike,一个是whalerrunlike:通过容器whaler打印出容器的启动命令:通过镜像导出dockerfile,听起来是不是N...B……哈哈,那我们走吧?1.获取Docker容器的运行命令。通常,一个容器可能因为测试或者一些标准化的操作方式而被启动。忘记容器的启动命令是什么了,需要在别的机器上创建的时候找回来。很麻烦,很多人可能认为通过dockerinspect分析输出的json文件中的volume、ports、Env等应该很熟悉,$dockerinspect$container_name命令可以查看容器的基本信息。虽然通过这种方式也能找到运行容器的命令,但是整理起来还是需要时间,所以这里提供一个工具runlike[1],可以直接打印运行命令。在runlike中传入一个容器名称,它会直接打印出容器的运行顺序。runlike使用起来非常方便。可以直接通过pip安装,也可以通过容器不安装直接使用:#pip$pipinstallrunlike#bydocker$aliasrunlike="dockerrun--rm-v/var/run/docker.sock:/var/run/docker.sockassaflavie/runlike”通过上面的容器来测试一下是否可以:使用起来方便多了。runlike的其他一些选项,可以直接通过--help学习。2.从镜像中导出Dockerfile通常可能会构建很多不同的镜像,比如维护一些基本的Docker镜像,想看看一些公共仓库的Docker镜像是如何构建的,或者因为长时间没有维护的Dockerfile不能发现当时构建镜像,或者因为网络无法查看,能够从镜像中导出Dockerfile是非常重要的。这里可以通过whaler[2]快速导出。命令写成命令别名:#aliasexportdockerimagetodockerfile$aliaswhaler="dockerrun-t--rm-v/var/run/docker.sock:/var/run/docker.sock:ropegleg/whaler"然后输出pegleg/whalerimagethroughthewhalercommanddockerfilefile:这将输出pegleg/whaler图像的Dockerfile的一般内容,还是彩色输出?哈哈,我有心了。从上图可以看出输出的Dockerfile也和平时写的不一样。大家可以看看Github上仓库里的Dockerfile。.com/P3GLEG/WhalerRUNexportCGO_ENABLED=0&&gobuild.RUNcpWhaler/root/WhalerFROMalpine:3.12.0WORKDIR/root/COPY--from=builder/root/Whaler.ENTRYPOINT["./Whaler"]从Dockerfile来看,这个whaler用的比较多它是分阶段构建的,所以不能输出--from=builder的构建内容。捕鲸者对此无罪。我们可以换个形象看看:这个很自然很熟悉。whaler支持同时分析多张图片等功能,这里就不多说了。如果你有兴趣,你可以自己看看。至于whaler是如何实现的,其实看源码就可以理解了。