当前位置: 首页 > java >正文

docker 容器管理入门教程

一、核心概念
  1. 容器(Container)
    Docker 容器是镜像的运行实例,类似于轻量级虚拟机,但更高效。容器通过镜像创建,可独立运行应用。

  2. 镜像(Image)
    镜像是静态文件,包含应用代码、依赖和运行时环境。通过 docker run 创建容器时,会基于镜像生成容器。

二、docker start 命令详解

用途:启动已停止的容器。
基本语法

docker start [OPTIONS] CONTAINER [CONTAINER...]

常用选项

  • -a, --attach:附加到容器,实时显示输出(默认不附加)。
  • -i, --interactive:交互式启动,保持标准输入打开(常用于需要输入的场景)。

示例

  1. 启动名为 my_container 的容器:
    docker start my_container
    
  2. 交互式启动并附加输出:
    docker start -ai my_container
    

注意

  • 只能启动已存在的容器。若容器不存在,报错 Error response from daemon: No such container
  • 容器状态需为 Exited(已停止),否则报错 container is already running
三、docker stop 命令详解

用途:优雅停止正在运行的容器(发送终止信号,等待进程结束)。
基本语法

docker stop [OPTIONS] CONTAINER [CONTAINER...]

常用选项

  • -t, --time=10:指定等待时间(秒),超时后强制终止。默认 10 秒。

示例

  1. 停止名为 my_container 的容器:
    docker stop my_container
    
  2. 等待 60 秒后强制停止:
    docker stop -t 60 my_container
    

注意

  • 容器停止后状态变为 Exited,可通过 docker start 重新启动。
  • 若需立即终止,可使用 docker kill(发送 SIGKILL 信号)。
四、docker run vs docker start
命令用途场景
docker run创建并启动新容器(基于镜像)首次运行镜像或创建新实例
docker start启动已停止的容器重启之前停止的容器

示例对比

# 创建并启动新容器(镜像为 nginx)
docker run -d --name web_server nginx# 启动已停止的容器
docker start web_server
五、容器生命周期管理
  1. 查看容器状态

    docker ps -a  # 列出所有容器(运行中/已停止)
    
  2. 删除容器

    docker rm my_container  # 删除已停止的容器
    docker rm -f my_container  # 强制删除正在运行的容器
    
  3. 重启容器

    docker restart my_container  # 等价于 stop + start
    
六、最佳实践
  1. 命名容器
    使用 --name 为容器指定易记的名称,避免操作时依赖随机 ID。

    docker run -d --name mysql_db mysql:latest
    
  2. 持久化数据
    使用卷(Volume)或绑定挂载(Bind Mount)保存数据,防止容器删除后数据丢失。

    docker run -v /host/path:/container/path mysql:latest
    
  3. 日志监控
    实时查看容器日志:

    docker logs -f my_container
    
  4. 进入容器调试

    docker exec -it my_container /bin/bash  # 进入容器 Shell
    
七、常见问题
  1. 容器无法停止
    使用 docker kill 强制终止:

    docker kill my_container
    
  2. 启动失败

    • 检查容器日志:docker logs my_container
    • 查看容器状态:docker inspect my_container
  3. 端口冲突
    确保主机端口未被占用:

    lsof -i :8080  # 检查 8080 端口占用
    
八、总结
  • docker start:启动已存在的容器。
  • docker stop:优雅停止容器,支持超时设置。
  • docker run:创建并启动新容器,与 start 互补。
  • 结合 docker psdocker logs 等命令,可高效管理容器生命周期。

通过掌握这些命令,您可以灵活控制 Docker 容器的启停,为应用部署和运维打下坚实基础。

http://www.xdnf.cn/news/17855.html

相关文章:

  • 【科研绘图系列】R语言绘制微生物丰度和基因表达值的相关性网络图
  • 解剖HashMap的put <五> JDK1.8
  • 短视频流量|基于Java+vue的短视频流量数据分析系统(源码+数据库+文档)
  • Go语言实战案例:用Gin实现图书管理接口
  • 云原生俱乐部-k8s知识点归纳(1)
  • 当GitHub宕机时,我们如何协作?
  • Flutter sqflite插件
  • Docker运行python项目:使用Docker成功启动FastAPI应用
  • Java 中导出 Excel 文件的方法
  • 本地jar导入到本地仓科和远程仓库
  • [ HTML 前端 ] 语法介绍和HBuilderX安装
  • Spring Boot 3中JWT密钥安全存储方案
  • 图灵测试:人工智能的“行为主义判据”与哲学争议
  • 论,物联网日志系统架构如何设计?
  • 使用colmap自制3DGaussian_Splatting数据集
  • Java进阶学习之Stream流的基本概念以及使用技巧
  • 第四天~在CANFD或CAN2.0的ARXML文件中实现Multiplexor多路复用信号实战
  • 3D-R1、Scene-R1、SpaceR论文解读
  • Codeforces Round 1042 (Div. 3)
  • Ansys FreeFlow入门:对搅拌罐进行建模
  • vector 认识及使用
  • 【论文阅读-Part1】PIKE-RAG: sPecIalized KnowledgE and Rationale Augmented Generation
  • 如何通过WiFi将文件从安卓设备传输到电脑
  • Scrapy 基础框架搭建教程:从环境配置到爬虫实现(附实例)
  • Pytorch在FSDP模型中使用EMA
  • 考研408《计算机组成原理》复习笔记,第四章(3)——指令集、汇编语言
  • 14、C 语言联合体和枚举知识点总结
  • Linux系统Namespace隔离实战:dd/mkfs/mount/unshare命令组合应用
  • 报数游戏(我将每文更新tips)
  • 2022 年全国硕士研究生招生考试真题笔记