插件窝 干货文章 聊聊docker下怎么启动容器

聊聊docker下怎么启动容器

容器 Docker 宿主机 bash 36    来源:    2025-04-30

在 Docker 中启动容器是一个基础但关键的操作,以下是详细步骤和常见场景的说明:


1. 最基础的容器启动

docker run [OPTIONS] IMAGE [COMMAND]

示例:启动一个一次性交互式 Ubuntu 容器

docker run -it --rm ubuntu /bin/bash
  • -it:分配交互式终端(-i 交互模式,-t 伪终端)
  • --rm:退出后自动删除容器(测试时常用)
  • ubuntu:镜像名称(本地不存在时会自动拉取)
  • /bin/bash:覆盖默认的启动命令

2. 后台运行容器( detached 模式)

docker run -d --name my_nginx nginx
  • -d:后台运行(detached 模式)
  • --name:指定容器名称(否则 Docker 会随机生成)

3. 端口映射

将容器内部端口映射到宿主机:

docker run -d -p 8080:80 --name web nginx
  • -p 8080:80:宿主机 8080 端口 → 容器的 80 端口

4. 挂载数据卷

持久化容器数据或共享宿主机目录:

docker run -d -v /宿主机路径:/容器路径 --name mysql_db mysql
  • -v:卷挂载(也可用 --mount,语法更明确)

5. 环境变量配置

docker run -e "MYSQL_ROOT_PASSWORD=123456" -d mysql
  • -e:设置环境变量(常用于配置服务参数)

6. 资源限制

限制容器内存和 CPU:

docker run -d --memory="1g" --cpus="0.5" --name limited_container nginx

7. 从已停止的容器重新启动

docker start [容器名/ID]

区别: - docker run创建新容器(每次执行都会生成新实例) - docker start:重启已存在的停止状态容器


8. 常用组合命令

  • 查看运行中的容器bash docker ps
  • 查看所有容器(包括已停止的)bash docker ps -a
  • 停止/删除容器bash docker stop [容器名/ID] docker rm [容器名/ID]

常见问题解决

  1. 端口冲突
    错误 Bind for 0.0.0.0:8080 failed: port is already allocated
    → 更换宿主机端口或停止占用端口的服务。

  2. 容器立即退出

    • 原因:容器内没有前台进程(如 nginx 需以前台模式运行)。
    • 解决:检查镜像的默认命令,或添加 tail -f /dev/null 保持运行。
  3. 权限问题
    添加 --privileged 或调整 SELinux/AppArmor 配置(生产环境慎用)。


进阶技巧

  • 使用 docker-compose:通过 YAML 文件定义多容器服务(推荐用于复杂应用)。
  • 容器日志查看
    bash docker logs -f [容器名]

如果需要更具体的场景(如网络配置、多容器互联等),可以进一步说明需求!