如何修复无法启动的docker容器
时间:2022-07-25
本文章向大家介绍如何修复无法启动的docker容器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
如何修复无法启动的docker容器
背景:
测试服务器上使用docker搭建了个elasticsearch服务集群,由于需要为es安装中文分词的插件,不料安装的姿势有问题,导致无法启动了。由于是测试开发所用,也没有为容器挂载数据卷,所以容器关闭后宿主机上就没有相关的目录了。而且是plugins目录结构的原因导致es服务找不到相关文件无法启动。
解决方法,使用cp命令将整个plugins目录复制到宿主机下修改,然后再cp回容器里:
# 将plugins目录cp到宿主机
[root@study-01 ~]# docker cp es1:/usr/share/elasticsearch/plugins ./
... 修改目录结构 ...
[root@study-01 ~]# docker cp ./plugins/ es1:/usr/share/elasticsearch/ # cp回容器里
[root@study-01 ~]# docker start es1 # 启动容器
另一个解决方法是创建镜像,把这个问题容器用docker commit提交到一个新的镜像,然后用docker run -it 基于新镜像运行一个新的容器进去改变(修复)配置文件。再通过新的容器再提交一个新的镜像,然后在基于新的镜像重新启动容器(同最初的容器)。这个方法是可行的,但问题是步骤多,而且提交了新的镜像,对于后续维护增加了复杂性。
步骤如下:
#把要修复的容器提交为镜像
[root@study-01 ~]# docker commit <container_id> <image_name>:<tag>
[root@study-01 ~]# docker rm <container_id> # 删除无法启动的容器,反正也用不了
#查看刚建立的新镜像
[root@study-01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
old-es3 first bf1fdb9b3a2d 54 minutes ago 550 MB
old-es2 first 4e1a92871782 55 minutes ago 550 MB
old-es1 first d1a485b8f5c0 55 minutes ago 551 MB
#利用这个新镜像创建容器,进入容器,修复配置文件
[root@study-01 ~]# docker run -it --name fix-es1 old-es1:first /bin/bash
#重新提交镜像
[root@study-01 ~]# docker commit <container_id> <image_name>:<tag>
#创建修复后的容器
[root@study-01 ~]# docker run -d --name es1 -p 9200:9200 -p 9300:9300 ok-es1:first
- ObjectDataSource与GridView配合使用经验总结系列一:数据绑定
- ObjectDataSource与GridView配合使用经验总结系列二:分页
- 网页优化系列二:使用Cache缓存静态文件、图片(asp.net版)
- Linux用户与“最小权限”原则
- WPF一步一脚印系列(1):万事起头难
- 自定义迭代器使用foreach
- 理解cookie的path和domain属性
- 静态页面设置缓存、动态页面设缓存(不断更新中。。。。)
- 区块链技术如何把你的游戏资产真正变为你的资产
- Python标准库07 信号 (signal包,部分os包)
- 当css属性width设为100%时
- GridView实战一:自定义分页、排序、修改、插入、删除
- Windows下程序打包发布时的小技巧
- Linux的“壳”
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux系统下为Nginx安装多版本PHP
- Linux系统下多版本php共存的解决方案(超简单)
- 宝塔Windows面板的安装Discuz! Q方法
- 并发情况下,单例模式之双重检验锁陷阱
- Android多种方式实现相机圆形预览的示例代码
- composer 下载太慢,无法完成安装
- 数字签名与数字证书
- Android TreeView实现带复选框树形组织结构
- Discuz! Q在Windows下CA根证书库错误
- 6种查看Linux进程占用端口号的方法详解
- Flutter 侧滑栏及城市选择UI的实现方法
- 使用iptable和Firewalld工具来管理Linux防火墙连接规则
- 如何使用Flutter开发一款电影APP详解
- Linux获取10个你最常用的终端命令列表
- Flutter banner_view 轮播图的使用及实现代码