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

你好,我是征哥,我相信不少人都会遇到这样的问题,容器本来运行的好好的,可是有一天报错退出了,重启容器依然报错,因为默认命令会崩溃,这意味着我无法启动容器后使用 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 [是容器内部的脚本]

如果要安装依赖:

sudo docker exec -it mypython pip install requests

这样使用 Python 容器,不修改系统的一个文件,安全环保,不想用了,直接停止删除容器,再删除镜像。

最后的话

以上就是自己使用 Docker 经常遇到的问题及解决方法,如果有帮助,还请点个赞,如果你有更好的方法,欢迎留言分享。

推荐阅读:

3分钟将Python应用容器化

docker 容器从入门到入魔

5b8b8597869601564575c033d22a19d2.png

参考资料

[1]

entrypoint: https://docs.docker.com/engine/reference/run/#/entrypoint-default-command-to-execute-at-runtime

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运行Docker容器有多种命令可以使用。其中一种是使用docker run命令来创建和运行一个新的容器。例如,可以使用以下命令创建并运行一个名为"mycontainer"的容器docker run --name mycontainer image_name 这将使用指定的镜像名称创建一个新的容器,并自动启动它。 另外,您还可以使用docker start命令启动之前停止容器。例如,可以使用以下命令启动名为"mycontainer"的容器docker start mycontainer 如果您想进入正在运行容器并与其进行交互,可以使用docker exec命令。例如,您可以使用以下命令进入名为"mycontainer"的容器并以命令行交互: docker exec -it mycontainer bash 这将打开一个新的终端会话,您可以在其中执行命令。 另外,如果您只想查看容器内部正在运行的进程,可以使用docker logs命令。例如,您可以使用以下命令查看名为"mycontainer"的容器的日志: docker logs mycontainer 综上所述,您可以使用docker run、docker start、docker exec和docker logs等命令来管理Docker容器运行和交互。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker常用命令容器命令](https://blog.csdn.net/weixin_52335817/article/details/126349759)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [使用Docker-容器命令案例2](https://blog.csdn.net/Leon_Jinhai_Sun/article/details/121216699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值