插件窝 干货文章 总结Docker中启动容器的方法

总结Docker中启动容器的方法

容器 Docker 启动 bash 985    来源:    2025-04-30

在 Docker 中启动容器有多种方法,以下是常用的几种方式及其适用场景的总结:


1. 从镜像创建并启动新容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 最常用方法:基于镜像创建并启动一个新容器。
  • 常用选项
    • -d:后台运行(detached 模式)。
    • --name:为容器指定名称。
    • -p:端口映射(主机端口:容器端口)。
    • -v:挂载数据卷(主机目录:容器目录)。
    • -e:设置环境变量。
    • --rm:容器退出后自动删除。
    • -it:交互式终端(通常与 /bin/bash 结合使用)。
  • 示例bash docker run -d --name nginx -p 80:80 nginx docker run -it --rm ubuntu /bin/bash

2. 启动已停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]
  • 适用场景:重新启动已存在的容器(保留原有配置)。
  • 常用选项
    • -a:附加输出(显示容器日志)。
    • -i:交互式启动。
  • 示例bash docker start -a my_nginx

3. 重启容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]
  • 适用场景:重启运行中的容器(相当于 stop + start)。
  • 示例bash docker restart my_nginx

4. 从 Docker Compose 启动

docker-compose up [OPTIONS]
  • 适用场景:通过 docker-compose.yml 文件启动多容器应用。
  • 常用选项
    • -d:后台运行。
    • --build:启动前重新构建镜像。
  • 示例bash docker-compose up -d

5. 通过容器名或 ID 启动

docker container start CONTAINER
  • 等价于 docker start,推荐使用更明确的 docker container 子命令。

6. 启动并进入容器(附加终端)

docker attach CONTAINER
  • 适用场景:附加到正在运行的容器的终端(需容器已启动交互式进程)。
  • 注意:退出终端可能导致容器停止(可通过 --sig-proxy=false 避免)。

7. 在容器中执行命令(不启动主进程)

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • 适用场景:在已运行的容器中执行临时命令(如调试)。
  • 常用选项
    • -it:交互式终端。
    • -e:设置环境变量。
  • 示例bash docker exec -it my_nginx /bin/bash

8. 创建容器但不启动

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 适用场景:仅创建容器(需手动通过 docker start 启动)。
  • 示例bash docker create --name my_redis redis docker start my_redis

关键区别总结

方法 作用 是否创建新容器
docker run 创建并启动新容器
docker start 启动已存在的容器
docker exec 在运行中的容器内执行命令
docker-compose up 通过 Compose 文件启动多容器 视配置而定

最佳实践建议

  1. 测试环境:使用 --rm 避免残留临时容器。
  2. 生产环境:推荐通过 docker-compose 或 Kubernetes 管理容器生命周期。
  3. 调试:结合 exec -it 进入容器排查问题。

根据需求选择合适的方法,灵活应对开发、测试和部署场景。