Docker 小白入门指南

举报
暮山紫 发表于 2026/08/28 09:29:15 2026/08/28
【摘要】 Docker 小白入门指南:从零开始玩转容器你是否曾经遇到过这样的困境:在本地开发环境运行得好好的程序,一部署到服务器就报错?或者团队里每个人的电脑环境都不一样,导致代码运行结果千奇百怪?如果你有过类似的烦恼,那么 Docker 就是为你准备的救星。本文将用最通俗的语言,带你走进 Docker 的世界。即使你没有任何容器经验,只要跟着步骤走,也能轻松上手。1. Docker 是什么?简单来说...

Docker 小白入门指南:从零开始玩转容器

你是否曾经遇到过这样的困境:在本地开发环境运行得好好的程序,一部署到服务器就报错?或者团队里每个人的电脑环境都不一样,导致代码运行结果千奇百怪?如果你有过类似的烦恼,那么 Docker 就是为你准备的救星。

本文将用最通俗的语言,带你走进 Docker 的世界。即使你没有任何容器经验,只要跟着步骤走,也能轻松上手。


1. Docker 是什么?

简单来说,Docker 是一种容器化技术,它可以把你的应用程序及其所有依赖(比如代码、运行库、系统工具、环境变量等)打包成一个标准化的“容器”,然后这个容器可以在任何安装了 Docker 的机器上运行,真正做到“一次构建,到处运行”。

你可以把它想象成一个集装箱

  • 在物流行业,有了集装箱,无论里面装的是衣服还是电子产品,都可以用卡车、火车、轮船运输,因为集装箱的尺寸是标准化的。

  • 在软件行业,Docker 容器就是标准化的“集装箱”,里面装的是你的应用和它需要的一切。开发、测试、生产环境都使用同一个“集装箱”,就不会出现“我这里可以跑,你那里跑不了”的问题了。

对比虚拟机:虚拟机是虚拟出一整台计算机(包括操作系统、硬件等),而 Docker 容器直接共享宿主机的操作系统内核,只是隔离了应用程序和依赖,因此更加轻量、启动更快、占用资源更少。


2. Docker 的核心概念

要使用 Docker,你需要理解三个最基本的概念:镜像、容器、仓库。它们之间的关系可以用下图简单表示:

  • 镜像(Image):相当于一个“模板”或“类”,它是只读的。比如 Ubuntu 22.04NginxMySQL 都是镜像。你可以基于一个基础镜像,加上自己的应用,构建出新的镜像。

  • 容器(Container):镜像运行起来之后就是一个容器。一个镜像可以同时运行多个容器,就像同一个类可以创建多个对象。容器是可以读写的,你可以在里面修改文件,但一般不建议直接修改运行中的容器,而是通过更新镜像来重新创建容器。

  • 仓库(Registry):用来存放镜像的地方。Docker Hub是官方最大的公共仓库,类似 GitHub 存放代码,Docker Hub 存放镜像。你可以把本地构建的镜像推送到仓库,也可以从仓库拉取别人发布的镜像。

另外还有一个重要概念:Dockerfile,它是一个文本文件,里面写了一系列构建镜像的指令。通过 Dockerfile,你可以自动化地构建出自己需要的镜像,而不是手动修改容器再保存。


3. 安装 Docker

在开始之前,你需要在自己的电脑上安装 Docker。

  • Windows / macOS:推荐安装 Docker Desktop,它自带图形界面和命令行工具,安装完成后启动即可。

  • Linux:可以使用官方脚本一键安装

安装完成后,打开终端(或 PowerShell),输入以下命令验证是否安装成功:

bash
docker --version

如果看到类似 Docker version 24.0.5, build ced0996 的输出,说明安装成功了。


4. 第一个 Docker 命令:Hello World

按照惯例,我们从 hello-world 开始。这个镜像非常小,作用就是打印一段欢迎信息,用来测试 Docker 是否正常工作。

在终端中执行:

bash
docker run hello-world

你会看到如下输出(部分):

text
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

这个命令做了三件事:

  1. 在本地查找名为 hello-world 的镜像,没找到;

  2. 自动从 Docker Hub 拉取该镜像;

  3. 基于该镜像创建并运行一个容器,容器输出信息后退出。

现在再运行一次,你会发现速度快了很多,因为镜像已经在本地了。


5. 常用的 Docker 命令

5.1 镜像相关

  • 查看本地镜像

    bash
    docker images
  • 拉取镜像

    bash
    docker pull nginx
  • 删除镜像

    bash
    docker rmi nginx

5.2 容器相关

  • 运行容器

    bash
    docker run -d -p 8080:80 --name my-nginx nginx

    参数解释:

    • -d:后台运行(detached mode)

    • -p 8080:80:将宿主机的 8080 端口映射到容器内的 80 端口

    • --name my-nginx:给容器起个名字,方便后续操作

    • nginx:使用的镜像名

  • 查看正在运行的容器

    bash
    docker ps
  • 查看所有容器(包括已停止的)

    bash
    docker ps -a
  • 停止容器

    bash
    docker stop my-nginx
  • 启动已停止的容器

    bash
    docker start my-nginx
  • 删除容器(必须先停止):

    bash
    docker rm my-nginx

    强制删除运行中的容器:docker rm -f my-nginx

  • 进入容器内部

    bash
    docker exec -it my-nginx bash

    如果容器里没有 bash,可以试试 sh。退出时输入 exit

  • 查看容器日志

    bash
    docker logs my-nginx

6. 实战:用 Docker 运行一个网站

下面我们运行一个 Nginx 服务器,并在浏览器中访问它。

  1. 拉取 Nginx 镜像并运行容器

    bash
    docker run -d -p 8080:80 --name web nginx
  2. 打开浏览器访问 http://localhost:8080(如果是在云服务器上,请使用服务器公网 IP 和端口)。你应该能看到 Nginx 的默认欢迎页面。

  3. 查看容器日志

    bash
    docker logs web

    你会看到 Nginx 的访问日志。

  4. 尝试修改容器内的文件(演示用,实际上不推荐这样操作):

    bash
    docker exec -it web bash
    cd /usr/share/nginx/html
    echo "<h1>Hello Docker!</h1>" > index.html
    exit

    刷新浏览器,页面变成了 “Hello Docker!”。这说明了容器和宿主机是隔离的,你在容器内做的修改不会影响宿主机。

  5. 停止并删除容器

    bash
    docker stop web
    docker rm web

7. 构建自己的镜像:Dockerfile 入门

在实际开发中,我们不会手动修改容器再保存成镜像,而是编写 Dockerfile 来自动化构建。

假设我们有一个简单的 Python Flask 应用,目录结构如下:

text
myapp/
├── app.py
└── requirements.txt

app.py 内容:

python
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return "Hello from Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

requirements.txt 内容:

text
flask

现在,在 myapp 目录下创建一个名为 Dockerfile 的文件(无扩展名),内容如下:

dockerfile
# 基于官方 Python 镜像
FROM python:3.9-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY app.py .

# 声明容器运行时监听的端口
EXPOSE 5000

# 容器启动时执行的命令
CMD ["python", "app.py"]

构建镜像

在 myapp 目录下打开终端,执行:

bash
docker build -t my-flask-app .
  • -t my-flask-app:给镜像起名为 my-flask-app,也可以加上版本号如 my-flask-app:1.0

  • .:表示使用当前目录下的 Dockerfile

构建完成后,用 docker images 可以看到新镜像。

运行自己的镜像

bash
docker run -d -p 5000:5000 --name flask-demo my-flask-app

打开浏览器访问 http://localhost:5000,你应该能看到 “Hello from Docker!”。

停止和清理

bash
docker stop flask-demo
docker rm flask-demo
docker rmi my-flask-app

8. 小结

通过这篇文章,你已经掌握了:

  • Docker 是什么以及为什么它这么流行

  • 镜像、容器、仓库的概念

  • 常用的 Docker 命令

  • 如何运行一个现成的容器

  • 如何用 Dockerfile 构建自己的镜像

Docker 的玩法远不止这些,还有数据卷(Volume)、网络、Docker Compose 编排多容器应用等高级特性。但对于小白来说,掌握以上内容已经可以解决很多环境一致性的问题了。

下一步建议:

  1. 阅读Docker 官方文档加深理解

  2. 尝试将你自己的项目 Docker 化

  3. 学习 Docker Compose 来管理多个服务

祝你在容器化的世界里玩得开心!🐳

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。