跳转到内容

Docker第一个容器

来自代码酷

Docker第一个容器[编辑 | 编辑源代码]

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

Docker容器是轻量级、可移植的软件包,包含运行应用程序所需的所有依赖项。本节将指导初学者创建第一个Docker容器,展示从拉取镜像到运行容器的完整流程。通过本教程,您将理解Docker的核心工作流程及其实际价值。

前提条件[编辑 | 编辑源代码]

  • 已安装Docker Engine(版本20.10+)
  • 终端/命令行基础操作知识
  • 2GB以上可用磁盘空间

步骤详解[编辑 | 编辑源代码]

1. 拉取镜像[编辑 | 编辑源代码]

Docker容器基于镜像创建。我们以官方hello-world镜像为例:

docker pull hello-world

输出示例:

Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:ffb13da98453e0f04d33a6eee5bb8e46ee50d08ebe17735fc0779d0349e889e9
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

关键说明:

  • Docker默认从Docker Hub拉取镜像
  • latest是未指定标签时的默认值
  • 分层下载机制显示每层的唯一哈希值

2. 运行容器[编辑 | 编辑源代码]

执行以下命令启动容器:

docker run hello-world

典型输出:

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

3. 过程解析[编辑 | 编辑源代码]

sequenceDiagram participant User participant Docker_Client participant Docker_Daemon participant Registry User->>Docker_Client: docker run hello-world Docker_Client->>Docker_Daemon: 创建容器请求 alt 镜像不存在本地 Docker_Daemon->>Registry: 拉取hello-world镜像 Registry-->>Docker_Daemon: 返回镜像数据 end Docker_Daemon->>Docker_Daemon: 创建容器进程 Docker_Daemon-->>User: 输出Hello消息

进阶操作[编辑 | 编辑源代码]

交互式容器[编辑 | 编辑源代码]

运行Ubuntu容器并进入bash shell:

docker run -it ubuntu bash

参数说明:

  • -i:保持STDIN打开
  • -t:分配伪终端
  • 退出使用exit命令

后台运行容器[编辑 | 编辑源代码]

启动Nginx服务器:

docker run -d -p 8080:80 nginx

验证运行:

curl http://localhost:8080

容器生命周期管理[编辑 | 编辑源代码]

常用命令示例:

命令 作用 示例
docker ps 查看运行中容器 docker ps -a(显示所有)
docker stop 停止容器 docker stop <container_id>
docker rm 删除容器 docker rm $(docker ps -aq)
docker logs 查看日志 docker logs -f <container_id>

实际应用案例[编辑 | 编辑源代码]

场景: 快速搭建Python开发环境

# 一次性运行Python解释器
docker run -it --rm python:3.9-slim python

# 挂载本地目录开发
docker run -it -v $(pwd):/app python:3.9 bash

优势体现:

  • 无需本地安装Python
  • 环境隔离不污染主机
  • 版本切换只需更改标签

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

Q:容器退出后数据会丢失吗? A:默认情况下会丢失,需要使用卷(volumes)持久化数据:

docker run -v /host/path:/container/path ...

Q:如何查看容器配置? A:使用inspect命令:

docker inspect <container_id> | jq .[0].NetworkSettings

数学表达[编辑 | 编辑源代码]

容器资源限制计算公式示例:

解析失败 (语法错误): {\displaystyle \text{Memory Limit} = \sum_{i=1}^{n} (\text{Container\_Mem}_i \times \text{Scale\_Factor}_i) }

其中Scale Factor根据优先级调整。

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

通过创建第一个Docker容器,您已经实践了Docker核心工作流:

  1. 镜像获取(pull)
  2. 容器创建(run)
  3. 生命周期管理
  4. 资源交互配置

下一步建议学习Docker镜像构建Docker Compose多容器管理。