Docker实用工具
Docker最佳实践
最近发现两个非常好用的工具,一个是runlike,一个是whaler
- runlike:通过容器打印出容器的启动命令
- whaler:通过镜像导出dockerfile
听起来是不是想说N…B…哈哈,那就走起?
找回Docker容器运行的命令
平时可能因为测试或者一些规范的操作方式导致启动一个容器,忘记了这个容器的启动命令是什么了,又需要找回来在别的机器上创建的时候,就很麻烦,可能很多人会想到通过docker inspect分析输出的json文件中的volume、ports、Env等
docker inspect $container_name
这个命令应该是很熟悉的,查看容器的基本信息。
虽然这样也能找到运行容器的命令,但是依旧还需要时间去整理,因此这里分享一个可以直接打印运行命令的工具runlike[1],在runlike传递一个容器名称,就会直接打印出该容器的运行命令。runlike使用起来非常方便,可以直接通过pip安装,也可以通过容器方式免安装使用:
# pip
pip install runlike
# by docker
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命令,便于使用,我们将该命令写成命令别名
# alias export docker image to dockerfile
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文件
FROM golang:1.14.4 AS builder
WORKDIR $GOPATH
RUN go get -u github.com/P3GLEG/Whaler
WORKDIR $GOPATH/src/github.com/P3GLEG/Whaler
RUN export CGO_ENABLED=0 && go build .
RUN cp Whaler /root/Whaler
FROM alpine:3.12.0
WORKDIR /root/
COPY --from=builder /root/Whaler .
ENTRYPOINT ["./Whaler"]
由dockerfile来看,这个whaler采用的多阶段构建,所以无法输出–from=builder的构建内容,这个锅whaler不背,我们可以换一个镜像看看:
这个就显示的很自然,很有熟悉的味道了。whaler支持同时分析多个镜像等等功能,这里就不在说了,感兴趣的可以自己看一下。至于whaler是怎么实现的,其实看一下源码就明白了。
相关文章
- Docker的基本使用——常用docker命令
- docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。「建议收藏」
- docker 错误记录
- Docker镜像
- docker搭建apache php环境步骤总结「建议收藏」
- 解决Docker镜像拉取失败问题
- n1.Docker命令参数一览表
- docker 卸载出错
- 利用群晖nas Docker平台安装qb(qbittorrent)实现PT/BT
- docker 离线安装_Docker安装
- Docker - docker-compose方式搭建高效的开发环境
- 软件容器化 and Docker
- docker 启动失败:Failed to start Docker Application Container Engine
- 【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
- Docker服务的重启服务命令(systemctl restart docker)
- Docker服务的查看服务状态命令(systemctl status docker)
- Docker查看容器命令(docker ps)
- 在mac上安装并使用docker
- Docker高级篇:docker网络的四种类型
- 「 【Docker】docker的基础使用介绍(小白如何使用docker) 」
- 「 【Docker】设置docker加速器(如何使docker下载速度变快) 」
- 「 【Docker】如何处理宝塔docker管理器未启动 」
- 「 【Docker】利用宝塔docker管理器搭建为知笔记(docker安装为知笔记) 」
- Docker安装RockerMQ消息队列
- 【Docker 系列】docker 学习 一,Docker的安装使用及Docker的基本工作原理
- 【Docker 系列】docker 学习六,探究一下数据卷容器
- 【Docker 系列】docker 学习十一,docker 总结和面试题整理
- docker实现自定义tomcat镜像并发布web服务
- Docker的save和export命令的区别
- 的docker容器创建并使用Docker容器启动Redis数据库(创建并启动名为redis)