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. 过程解析[编辑 | 编辑源代码]
进阶操作[编辑 | 编辑源代码]
交互式容器[编辑 | 编辑源代码]
运行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核心工作流:
- 镜像获取(pull)
- 容器创建(run)
- 生命周期管理
- 资源交互配置
下一步建议学习Docker镜像构建和Docker Compose多容器管理。