跳转到内容

Docker容器创建

来自代码酷

Docker容器创建[编辑 | 编辑源代码]

介绍[编辑 | 编辑源代码]

Docker容器创建是Docker技术中的核心操作之一,它允许用户基于镜像启动一个或多个隔离的进程环境。容器是镜像的运行实例,具有轻量级、快速启动和资源高效的特点。理解容器创建过程对于掌握Docker至关重要,无论是开发、测试还是生产环境部署。

本页将详细介绍以下内容:

  • 容器创建的基本命令与参数
  • 容器生命周期与创建的关系
  • 实际应用场景与示例

基本语法[编辑 | 编辑源代码]

创建容器的核心命令是docker createdocker run。两者的区别在于:

  • docker create:仅创建容器但不启动
  • docker run:创建并立即启动容器

命令格式[编辑 | 编辑源代码]

# 基础创建命令(不启动)
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

# 创建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

参数详解[编辑 | 编辑源代码]

常用选项(部分):

参数 说明 示例
-d 后台运行 docker run -d nginx
-p 端口映射 -p 8080:80
-v 卷挂载 -v /宿主机路径:/容器路径
--name 指定容器名称 --name my_container
-e 设置环境变量 -e MYSQL_ROOT_PASSWORD=123

示例[编辑 | 编辑源代码]

示例1:创建Nginx容器[编辑 | 编辑源代码]

# 创建并启动Nginx容器,映射端口80到宿主机的8080
docker run -d -p 8080:80 --name my_nginx nginx

输出说明

3a2b1c0d4e5f  # 返回容器ID

示例2:交互式容器[编辑 | 编辑源代码]

# 启动Ubuntu容器并进入bash交互
docker run -it ubuntu /bin/bash

操作后

  • 终端会直接进入容器的bash shell
  • 退出时使用exit命令

生命周期与状态转换[编辑 | 编辑源代码]

stateDiagram-v2 [*] --> Created: docker create Created --> Running: docker start Running --> Stopped: 进程结束/手动停止 Stopped --> Running: docker start Stopped --> [*]: docker rm

高级配置[编辑 | 编辑源代码]

资源限制[编辑 | 编辑源代码]

通过参数限制容器资源:

docker run -d --memory="512m" --cpus="1.5" nginx

网络模式[编辑 | 编辑源代码]

支持多种网络模式:

  • --network bridge(默认)
  • --network host
  • --network none

实际应用场景[编辑 | 编辑源代码]

场景1:开发环境隔离[编辑 | 编辑源代码]

为每个项目创建独立容器:

docker run -d -v $(pwd):/app -p 3000:3000 node:14 npm start

场景2:数据库部署[编辑 | 编辑源代码]

配置MySQL容器:

docker run -d \
  --name mysql_db \
  -e MYSQL_ROOT_PASSWORD=secret \
  -v mysql_data:/var/lib/mysql \
  mysql:5.7

常见问题[编辑 | 编辑源代码]

Q1:容器创建后立即退出?[编辑 | 编辑源代码]

原因:主进程结束(如未指定持续运行的命令) 解决:添加持续进程如tail -f /dev/null

Q2:如何查看创建失败的容器?[编辑 | 编辑源代码]

使用命令:

docker ps -a --filter status=created

数学原理(可选)[编辑 | 编辑源代码]

容器资源隔离基于Linux内核特性:

  • CPU份额计算:CPU比例=容器份额总份额
  • 内存限制:可用内存=min(cgroup限制,物理内存)

总结[编辑 | 编辑源代码]

Docker容器创建是容器化技术的起点,通过灵活的参数配置可实现:

  • 环境隔离
  • 资源控制
  • 快速部署

掌握创建命令及其选项是有效使用Docker的基础。建议通过实践练习加深理解。