Docker运行临时镜像容器的实现
作者:红烧肉土豆条
本文主要介绍了基于Docker进行镜像构建或排查问题时的两种调试方法,对于普通应用镜像,可以直接运行并进入容器内部进行调试,如MySQL、Redis等,对于基础镜像,由于它们会默认启动自己的进程,直接启动容器会导致生命周期结束,感兴趣的可以了解一下
问题
我们在基于docker进行镜像构建或进行问题排查,或需要对镜像的适用性进行初步调试,如镜像内的运行环境、依赖包版本、目录结构等,此时就需要将镜像启动起来,对内部情况进行查看或调试,我们有两种方法可以实现
普通应用镜像
部分应用镜像可以直接运行,然后进入容器内进行调试,如Mysql、Redis等,调试后删除容器即可,此时可以不考虑端口映射、文件目录挂载等因素,如调试redis
建议先运行起容器,再进入容器内部调试,不建议直接使用-it等命令,因为应用镜像会默认启动他们自己的进程,-it会失效
# 启动容器 docker run --name redis-debug -d redis:v7.0.5 # 等待启动完成,进入容器 docker exec -it redis-debug /bin/sh # 调试完成,删除容器
基础镜像
对于基础镜像,直接启动容器的方式是不可行的,其实也不是启动失败,而是先运行后因没有其他的指令需要执行,导致生命周期结束。
此处方法可同时满足基础镜像和各种应用镜像
# 临时启动镜像容器,并强制进入sh docker run --rm -it --entrypoint /bin/sh --name redis-debug image:version # 参数解释 #run: 运行指令 #--rm: 容器停止后删除,如容器的文件系统或其他资源 #-it: 交互式命令终端 #--entrypoint /bin/sh: 强制覆盖入口第一个进程,例如redis会启动redis-server,此时会将redis-server替换为/bin/sh, 不同的发行版对应的常用终端可自己调整, 如centos的可使用/bin/bash #--name: 容器名称 #image:version: 镜像及版本 # 调试结束,使用exit命令退出容器,容器会自动删除 exit
到此这篇关于Docker运行临时镜像容器的实现的文章就介绍到这了,更多相关Docker 运行临时镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
