• Docker小工具: runlike 和 whaler


    yum install epel-* -y

    yum install python-pip

    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
    python get-pip.py

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

    • runlike:通过容器打印出容器的启动命令

    • whaler:通过镜像导出dockerfile

    找回Docker容器运行的命令

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

    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是怎么实现的,其实看一下源码就明白了。

    docker镜像批量打包 批量打包镜像: # docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-master.tar 将机器上的所有镜像打包到haha.tar文件里面. 导入镜像: # docker load -i k8s-master.tar 然后docker images就可以看到拷贝过来的镜像了.
  • 相关阅读:
    EF架构~系列目录
    不谈技术~做一个好人,一个简单的人
    不谈技术~谈人生,干吧,年轻人!
    c++ 用lambda删除vector中元素
    转:我们为什么这么容易受骗?
    windows 数据类型
    《暗时间》书摘 “学习与思考”
    转:斯托克代尔悖论与底线思考法
    Android之HelloWorld
    win7搭建android开发环境
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/16423069.html
Copyright © 2020-2023  润新知