【最佳实践】找回容器启动命令以及通过镜像导出Dockerfile

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker系列

Docker最佳实践

找回Docker容器运行的命令

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

docker inspect $container_name

虽然这样也能找到运行容器的命令,但是依旧还需要时间去整理,因此这里分享一个可以直接打印运行命令的工具runlike,在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来快速的导出.

这里我们依旧不安装,通过容器化的方式使用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是怎么实现的,其实看一下源码就明白了。

相关文章
|
1月前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
12天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
142 77
|
9天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
61 24
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
552 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
11天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
76 6
|
2月前
|
存储 关系型数据库 MySQL
|
2月前
|
存储 数据库 Docker
正确删除容器和镜像的方式
【10月更文挑战第24天】本文介绍了在Docker中如何正确删除容器和镜像,包括停止容器、删除已停止容器、删除未被使用的镜像以及注意事项,如数据备份、依赖关系检查和权限问题。其他容器管理工具的操作类似,但命令和语法可能不同。
321 3
|
1月前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
20天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
4天前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
20 3
实战~如何组织一个多容器项目docker-compose
下一篇
DataWorks