Docker 新手入门:从安装到跑起第一个容器

举报
yd_299492234 发表于 2026/10/22 11:03:39 2026/10/22
【摘要】 第一次听说 Docker 的人,常常会被一堆新名词绕晕:镜像、容器、仓库、Dockerfile……其实抓住一条主线就够了:Docker 是为了解决“环境不一致”而生的。下面这篇短文,带你从安装一路走到跑起第一个属于自己的容器。 一、为什么用 Docker1. 告别“在我机器上能跑”开发环境装的是 Python 3.11,测试服务器是 3.9,线上又是 3.8——版本差异导致的 bug 排查起...

第一次听说 Docker 的人,常常会被一堆新名词绕晕:镜像、容器、仓库、Dockerfile……其实抓住一条主线就够了:Docker 是为了解决“环境不一致”而生的。下面这篇短文,带你从安装一路走到跑起第一个属于自己的容器。

一、为什么用 Docker

1. 告别“在我机器上能跑”

开发环境装的是 Python 3.11,测试服务器是 3.9,线上又是 3.8——版本差异导致的 bug 排查起来最折磨人。Docker 把应用连同它依赖的运行环境一起打包成镜像,在哪里运行都是一模一样的环境。

2. 比虚拟机轻得多

虚拟机要虚拟一整套硬件和操作系统,启动按分钟计;容器共享宿主机的操作系统内核,启动只要几秒,资源占用也小得多。一台普通的开发机同时跑十几个容器毫无压力。

3. 分发和部署极快

镜像一次构建、处处运行。想给同事演示?发他一个镜像,docker run 一下就能跑,不用再附一份“环境配置说明书”。

先记住三个核心概念:**镜像(Image)**是只读的应用模板,好比“安装包”;**容器(Container)**是镜像运行起来的实例,好比“运行中的程序”;**仓库(Registry)**是集中存放镜像的地方,Docker Hub 就是最大的公共仓库。

二、安装要点

  • Linux(推荐 Ubuntu):跟着 Docker 官方文档用 apt 安装 docker-ce 即可。装完建议把当前用户加入 docker 用户组,这样以后执行 docker 命令不用每次都加 sudo。
  • Windows / macOS:安装 Docker Desktop,它会在后台起一个轻量虚拟机。Windows 上需要先启用 WSL2。
  • 验证安装:执行 docker --version 能看到版本号,再跑 docker run hello-world——如果它能自动拉取镜像并打印出 “Hello from Docker!”,说明安装成功。
  • 国内网络注意:默认从 Docker Hub 拉镜像可能很慢或超时,建议配置国内镜像加速地址,这是新手最容易卡住的第一关。

三、常用命令

docker pull nginx              # 从仓库拉取镜像
docker images                  # 查看本地有哪些镜像
docker run -d -p 8080:80 --name my-nginx nginx   # 后台运行容器
docker ps                      # 查看正在运行的容器
docker ps -a                   # 查看所有容器(含已停止)
docker logs my-nginx           # 查看容器日志
docker exec -it my-nginx bash  # 进入容器内部
docker stop my-nginx           # 停止容器
docker rm my-nginx             # 删除容器
docker build -t my-app .       # 根据 Dockerfile 构建镜像

几个常用参数的含义:-d 是后台运行;-p 8080:80 把宿主机的 8080 端口映射到容器的 80 端口;--name 给容器起个名字方便管理;-it 组合让你能交互式地进入容器。

四、一个完整小例子:把自己的页面跑起来

只跑别人的 nginx 不过瘾,我们亲手构建一个镜像:

第 1 步,新建一个文件夹,里面写一个 index.html:

<h1>Hello Docker,这是我的第一个容器!</h1>

第 2 步,同目录下写一个 Dockerfile(注意文件名首字母大写、无后缀):

FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

意思是:以轻量的 nginx 镜像为底,把我们的页面拷进它的默认网页目录。

第 3 步,构建镜像:

docker build -t hello-docker .

第 4 步,运行它:

docker run -d -p 8080:80 --name hello hello-docker

第 5 步,浏览器打开 http://localhost:8080,看到 “Hello Docker” 就成功了!

玩完记得清理:docker stop hello && docker rm hello,好习惯从第一天养成。

五、常见坑

  1. 端口被占用:docker run 报端口冲突时,换个宿主机端口映射即可,比如 -p 8081:80。
  2. 容器“消失”了:docker ps 看不到刚启动的容器?记住容器是“前台进程结束就退出”的,用 docker ps -a 找到它,再用 docker logs 看退出的报错。
  3. 权限不足:Linux 下报 permission denied,多半是当前用户不在 docker 组,重新登录 shell 或用 sudo 解决。
  4. 拉镜像超时:先检查网络,再确认镜像加速器配好了没。
  5. 容器删了数据就没了:容器内部的文件系统随容器删除而消失,重要数据要用 -v 把宿主机目录挂载进去持久化。
  6. 镜像越做越大:Dockerfile 里每条 RUN 都会产生一层,能合并的尽量用 && 合并;再配个 .dockerignore 把 node_modules、.git 这类目录排除在构建上下文之外。

写在最后

到这里,你已经走完了 Docker 的最小闭环:安装 → 拉镜像 → 跑容器 → 自己构建镜像。下一步可以试试 docker-compose,用一个 YAML 文件把“应用 + 数据库 + 缓存”这样的多容器组合一次编排起来,那才是 Docker 在日常开发里真正的甜蜜点。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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