99%的人没使用过它俩,Docker优秀实践

开发 开发工具
平时可能因为测试或者一些规范的操作方式导致启动一个容器,忘记了这个容器的启动命令是什么了,又需要找回来在别的机器上创建的时候,就很麻烦,可能很多人会想到通过docker inspect分析输出的json文件中的volume、ports、Env等。

[[403613]]

 Docker最佳实践

最近发现两个非常好用的工具,一个是runlike,一个是whaler

  • runlike:通过容器打印出容器的启动命令
  • whaler:通过镜像导出dockerfile

听起来是不是想说N...B...哈哈,那就走起?

找回Docker容器运行的命令

平时可能因为测试或者一些规范的操作方式导致启动一个容器,忘记了这个容器的启动命令是什么了,又需要找回来在别的机器上创建的时候,就很麻烦,可能很多人会想到通过docker inspect分析输出的json文件中的volume、ports、Env等

  1. docker inspect $container_name 

这个命令应该是很熟悉的,查看容器的基本信息。

虽然这样也能找到运行容器的命令,但是依旧还需要时间去整理,因此这里分享一个可以直接打印运行命令的工具runlike[1],在runlike传递一个容器名称,就会直接打印出该容器的运行命令。runlike使用起来非常方便,可以直接通过pip安装,也可以通过容器方式免安装使用:

  1.  pip 
  2. pip install runlike 
  3. by docker 
  4. alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike" 

下面还是通过上面那个容器测试一下是否可以:

这样使用起来就方便很多了。关于runlike一些其他的选项,可以直接通过--help学习。

从镜像导出Dockerfile

平时可能会构建很多不同的镜像,比如维护一些基础Docker镜像、想查看一些公开仓库的Docker镜像是怎么构建的,或因为长时间不维护找不到当时构建镜像的Dockerfile,或者因为网络无法查看时,能从镜像导出Dockerfile就显得很重要,这里可以通过whaler[2]来快速的导出. 这里我们依旧不安装,通过容器化的方式使用dfimage命令,便于使用,我们将该命令写成命令别名

  1. # alias export docker image to dockerfile 
  2. alias whaler="docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler" 

然后通过whaler命令输出pegleg/whaler镜像的dockerfile文件:

这样就输出pegleg/whaler这个镜像的Dockerfile大致的内容了,还是彩色的输出呢?哈哈,有心了。从上图可以看到输出的dockerfile也与平常写的不太一样,可以在github上看下仓库内的dockerfile文件

  1. FROM golang:1.14.4 AS builder 
  2. WORKDIR $GOPATH 
  3. RUN go get -u github.com/P3GLEG/Whaler 
  4. WORKDIR $GOPATH/src/github.com/P3GLEG/Whaler 
  5. RUN export CGO_ENABLED=0 && go build . 
  6. RUN cp Whaler /root/Whaler 
  7.  
  8. FROM alpine:3.12.0 
  9. WORKDIR /root/ 
  10. COPY --from=builder /root/Whaler . 
  11. ENTRYPOINT ["./Whaler"

由dockerfile来看,这个whaler采用的多阶段构建,所以无法输出--from=builder的构建内容,这个锅whaler不背,我们可以换一个镜像看看:

这个就显示的很自然,很有熟悉的味道了。whaler支持同时分析多个镜像等等功能,这里就不在说了,感兴趣的可以自己看一下。至于whaler是怎么实现的,其实看一下源码就明白了。

 

责任编辑:姜华 来源: 云原生生态圈
相关推荐

2020-05-26 12:32:30

Python模板语言编程语言

2020-05-27 09:23:29

Python模板语言

2021-07-22 09:28:35

DockerLinux命令

2019-12-16 12:11:53

Docker容器Kubernetes

2018-11-21 09:40:57

熔断实践AOP

2023-01-13 16:34:08

2022-08-01 07:27:36

JavaDocker容器

2021-10-15 06:49:37

MySQL

2019-05-21 10:45:44

Docker架构容器

2022-07-25 14:24:53

Docker容器安全

2022-08-19 09:01:59

ReactTS类型

2021-09-25 13:05:10

MYSQL开发数据库

2022-07-18 08:57:08

容器安全容器恶意攻击

2022-03-05 23:08:14

开源软件开发技术

2023-12-08 14:50:45

Python枚举类工具

2024-06-12 13:57:00

2020-04-23 10:35:10

Docker镜像实践

2021-02-21 09:33:19

Docker容器安全 应用程序

2023-02-07 15:33:16

云迁移数据中心云计算

2020-05-25 11:14:59

代码程序开发
点赞
收藏

51CTO技术栈公众号