加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

如何利用不同的命令启动已经停止运行的 Docker 容器?

发布时间:2022-06-10 01:45:25 所属栏目:云计算 来源:互联网
导读:你好,我是征哥,我相信不少人都会遇到这样的问题,容器本来运行的好好的,可是有一天报错退出了,重启容器依然报错,因为默认命令会崩溃,这意味着我无法启动容器后使用 docker exec。 今天分享:如何不重新构建镜像的情况解决容器报错的问题,只需要两步。
  你好,我是征哥,我相信不少人都会遇到这样的问题,容器本来运行的好好的,可是有一天报错退出了,重启容器依然报错,因为默认命令会崩溃,这意味着我无法启动容器后使用 docker exec。
 
  今天分享:如何不重新构建镜像的情况解决容器报错的问题,只需要两步。
 
  第一步,将报错的容器保存至新的镜像
  这一步是为了保存之前对容器的变更,如果没有对容器写入东西,这一步可以忽略。
 
  先查看报错的容器,记录它的 CONTAINER_ID:
 
  复制
  docker ps -a
 
  然后将容器保存至新的镜像:
 
  复制
  docker commit $CONTAINER_ID somenzz/image_xxx_new
 
  第二步,从新的镜像启动一个新的命令
 
  比如说启动一个 shell,去修复容器:
 
  复制
  docker run -ti --entrypoint=sh somenzz/image_xxx_new
 
  这里用到了 entrypoint[1],在构建镜像的时候,我们可以使用 CMD 或者 ENTRYPOINT 配置容器启动时的执行命令,但这两者有所不同:
 
  CMD 命令设置容器启动后默认执行的命令及其参数,但 CMD 设置的命令能够被 docker run 命令后面的命令行参数替换。
  ENTRYPOINT 配置容器启动时的执行命令,不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令。
  我用 Python 容器的方法
  容器就是运行环境的打包。我在自己的服务器上安装了 Docker,那想获取一个 Python 环境,太简单了:
 
  首先下载 Python 镜像,目前最新是 3.10.4,你可以 docker search python 查看。
 
  复制
  sudo docker pull python
 
  然后启动一个后台永不退出的容器:
 
  复制
  sudo docker run --name mypython -dt python /bin/bash
 
  然后就可以随意使用 Python 了:
 
  复制
  sudo docker exec -it mypython python [宿主机器的 Python 脚本,非容器内部]
 
  如果要安装依赖:
 
  复制
  sudo docker exec -it mypython pip install requests
 
  这样使用 Python 容器,不修改系统的一个文件,安全环保,不想用了,直接停止删除容器,再删除镜像。

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!