Docker容器状态的形成过程

本文介绍了Docker容器从创建到运行、停止、重启、暂停、恢复以及删除的全过程,详细解析了各种状态下如何通过docker命令操作容器,并讨论了restart Policy,包括always、never、on-failure和unless-stopped策略,以及它们对容器重启的影响和延迟机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker容器状态的形成过程
​​
Docker容器状态的形成过程
下图中是docker运行的几种状态,带有颜色的圆形块,是都可以在docker
在这里插入图片描述

ps中查看到的状态

容器的运行过程

容器的创建和运行
docker create 创建容器但不会运行(None—create—created)
docker start 启动一个已经创建的容器(created—start—running)
docker run 创建并启动容器(None—created—start—running)
容器的运行和停止
docker start 启动一个停止中的容器(stopped—start—running)
docker stop 停止一个运行中的容器(running—die—stop—exited)
docker kill 杀死一个运行中的容器(running—die—kill—exited)
容器的重启
docker restart 重启一个运行中的容器(running—die—start—running)
容器的暂停
docker pause 暂停一个运行中的容器(running—pause—paused)
docker unpause 解除容器的暂停(paused—unpause—running)
容器进程退出或内存溢出
进程退出:Container process exited

内存溢出:killed by out of memory

图中红色方框圈出的这两项,都会经过die然后出现一个restart Policy,是否重新启动服务的一个策略,它由你在运行

### 使用 Docker 进行容器化部署 #### 什么是 Docker 容器化? Docker 是一种用于自动化应用程序部署、扩展和管理的开源平台。它允许开发者将应用程序及其所有依赖项打包成一个独立的单元——称为容器,从而确保其在任何环境中都能一致运行[^1]。 #### 镜像与容器的关系 镜像是容器的基础,类似于虚拟机中的 ISO 映像文件。当镜像被加载到 Docker 引擎并启动时,便形成了一个运行状态容器。每个容器都彼此隔离,并共享主机操作系统的内核资源[^2]。 #### 创建自定义镜像的过程 为了创建自己的 Docker 镜像,通常需要编写一份名为 `Dockerfile` 的配置脚本。以下是基于 Node.js 应用程序的一个典型例子: ```dockerfile # 基础镜像层 FROM node:14 # 设置工作目录 WORKDIR /usr/src/app # 将本地项目的 package.json 和 package-lock.json 复制到容器中 COPY package*.json ./ # 安装项目所需的依赖库 RUN npm install # 把当前目录下的其他文件复制至容器的工作目录下 COPY . . # 暴露端口供外部访问 EXPOSE 8080 # 启动命令,默认执行 npm start 来运行服务 CMD ["npm", "start"] ``` 上述代码片段展示了如何通过指定基础镜像、设定环境变量以及添加必要的二进制文件或脚本来定制专属的应用镜像[^4]。 #### 构建与推送镜像 完成 Dockerfile 编辑后,在终端输入以下指令即可生成新的镜像版本: ```bash docker build -t yourusername/yourappname . ``` 其中 `-t` 参数用来标记新构建出来的镜像名称;最后那个点代表路径为当前所在位置。 接着可上传此镜像至远程仓库以便团队成员共同使用或者跨服务器迁移: ```bash docker push yourusername/yourappname ``` #### 实际案例分析 假设有一款 Web API 被封装进了刚才提到的那种形式里头,则只需拉取对应标签号的最新稳定版下来再一键开启就行啦!比如下面这两步就能搞定一切事情: ```bash docker pull yourusername/yourappname:latest docker run -d -p 8080:8080 --name my-running-app yourusername/yourappname:latest ``` 这里需要注意的是参数部分: - `-d` 表示以后台模式运行该进程; - `-p` 则是用来映射宿主机上的某个开放端口号给内部监听的那个地址使用的; - `--name` 给正在运作着的服务起个别名方便后续管理维护。 --- #### 总结 借助于轻量级特性,相比传统 VM 方案而言能够显著提升效率的同时降低运维成本,而且由于所有的组件都被标准化处理过了的缘故,因此也极大地减少了因兼容性问题所引发的各种麻烦事发生几率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值