Docker 入门:从安装到第一个容器的完整实践

举报
yd_229195605 发表于 2026/11/09 15:54:44 2026/11/09
【摘要】 为什么需要 Docker很多开发者都遇到过这样的问题:代码在自己的电脑上跑得好好的,换一台机器就报错。原因往往是环境不一致:Python 版本不同、系统库缺失、配置文件路径不对。Docker 的思路是把应用和它依赖的环境打包成一个镜像,镜像在任何装了 Docker 的机器上运行的结果都是一样的,这就从根本上解决了“在我机器上能跑”的问题。 镜像与容器:先分清两个概念镜像是一个只读的模板,包...

为什么需要 Docker

很多开发者都遇到过这样的问题:代码在自己的电脑上跑得好好的,换一台机器就报错。原因往往是环境不一致:Python 版本不同、系统库缺失、配置文件路径不对。Docker 的思路是把应用和它依赖的环境打包成一个镜像,镜像在任何装了 Docker 的机器上运行的结果都是一样的,这就从根本上解决了“在我机器上能跑”的问题。

镜像与容器:先分清两个概念

镜像是一个只读的模板,包含了运行应用所需的系统、依赖和代码;容器是镜像运行起来的实例,可以启动、停止和删除。同一个镜像可以启动多个容器,容器之间默认相互隔离。理解这组关系,是学 Docker 的第一步。

安装与验证

Windows 和 macOS 可以安装 Docker Desktop,Linux 服务器一般用官方脚本或发行版的包管理器安装。安装完成后,先用两条命令验证环境是否正常:

docker --version
docker run hello-world

如果看到 hello-world 容器的欢迎信息,说明 Docker 已经可以正常工作。第一次运行 hello-world 时,Docker 会自动从镜像仓库拉取镜像,这个过程只需要几秒。

运行第一个容器

以 Nginx 为例,一条命令就能启动一个 Web 服务:

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

参数的含义很直观:-d 表示后台运行,-p 把主机的 8080 端口映射到容器的 80 端口,–name 给容器起个名字。启动后,在浏览器地址栏输入 localhost:8080 并访问,就能看到 Nginx 的欢迎页面。

常用命令速查

日常使用中,这几个命令出现频率最高:docker ps 查看正在运行的容器,docker ps -a 查看全部容器,docker logs 查看容器日志,docker stop 和 docker start 停止与启动容器,docker rm 删除容器,docker images 查看本地镜像,docker pull 拉取镜像,docker exec -it 进入正在运行的容器内部排查问题。

用 Dockerfile 构建自己的镜像

当需要把自己的应用容器化时,可以写一个 Dockerfile。例如一个简单的 Python 应用:

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

然后用 docker build -t my-app . 构建镜像,再用 docker run 启动它。把依赖安装放在代码复制之前,是一个实用的小技巧:只要依赖文件不变,构建时就能复用缓存,速度快很多。

数据持久化:别把数据放在容器里

容器被删除后,容器内部写入的数据也会随之消失。需要长期保存的数据要用数据卷挂载到主机目录,例如 docker run -v /data:/app/data。数据库、日志和上传文件都应该这样处理,这是新手最容易踩的坑。

常见问题与排查思路

遇到问题时,先看日志:docker logs 容器名往往能直接看到报错。端口冲突就换一个主机端口;镜像拉取慢可以配置国内镜像加速;容器启动后立刻退出,通常是启动命令出错或程序异常退出,查看退出码和日志就能定位。

小结

Docker 的核心就三步:拉取或构建镜像、运行容器、管理容器与数据。掌握这一套流程后,就可以把自己的项目容器化,再结合编排工具部署到云服务器上。对初学者来说,不必一开始就研究所有细节,先跑通一个容器,再逐步深入网络、数据卷和镜像优化,学习曲线会平缓得多。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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