千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

当前位置:首页  >  零基础学IT  >  零基础学云计算  > Docker入门从安装到运行第一容器_千鋒教育

Docker入门从安装到运行第一容器_千鋒教育

来源:千锋教育
发布人:cli
时间: 2026-05-09 16:56:08 1778316968

01 为什么需要Docker:告别“在我电脑上能跑”的噩梦

你是否有过这样的经历:开发环境一切正常,代码一提交到测试服务器就报错,运维人员对着控制台日志挠头三小时,最后发现是Node.js版本差了一个小版本?或者在新电脑上从零配置Python环境,pip install冲突、系统库缺失,折腾半天还没跑起来。这种“环境不一致”的恐惧,几乎每个开发者都遇到过。

Docker正是为此而生。它不是一个虚拟机,而是一种轻量级的容器化技术。容器将应用及其所有依赖(代码、运行时、系统工具、库、配置文件)打包成一个标准化的单元,这个单元可以在任何安装了Docker的机器上以完全相同的方式运行。你不需要关心底层操作系统是Ubuntu还是CentOS,也不需要担心Python是3.6还是3.9——容器内部自带完整环境。

这种“一次构建,到处运行”的能力,直接消灭了环境差异带来的问题。根据行业调研,团队引入容器化后,因环境不一致导致的故障平均减少70%以上(注:此为行业通用数据,非千锋案例)。更重要的是,容器的启动速度极快(秒级),资源占用远低于虚拟机(没有独立的操作系统内核)。这意味着你可以在开发机上同时运行多个隔离的应用,而不会让电脑卡成PPT。

金句:环境一致性是开发的底线,容器化是守住这条底线的护城河。

02 安装Docker:三分钟搞定,不踩坑

安装Docker比你想象的简单。这里以最常见的三种操作系统为例,给出清晰的步骤。

Linux(Ubuntu / CentOS)

使用官方脚本一键安装:

bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装完成后,加入docker用户组(避免每次sudo):

bash
sudo usermod -aG docker $USER

然后退出终端重新登录,执行docker version验证。

Windows / macOS

直接下载Docker Desktop,安装后启动,它会自动安装一个轻量级Linux虚拟机作为容器运行环境。注意:Windows需要开启WSL2(Windows Subsystem for Linux 2),官方安装器会自动配置。安装完成后,打开终端输入docker version确认。

安装过程中最常出现的坑是权限问题(Linux)或虚拟化未开启(Windows)。排查口诀:

  • ►Linux报错“permission denied”:检查用户组是否生效,或直接加sudo。
  • ►Windows报错“Hardware assisted virtualization not found”:进入BIOS开启Intel VT-x或AMD-V。

验证安装是否成功的黄金命令:

bash
docker run hello-world

如果看到“Hello from Docker!”的输出,说明安装和配置全部正确。这个命令会从Docker Hub(官方镜像仓库)拉取一个测试镜像并运行,整个过程不到10秒。

金句:安装Docker不是终点,而是通往高效开发的第一级台阶。

03 运行第一个容器:从拉取镜像到启动服务

现在你已经装好了Docker,我们来运行一个真正有意义的容器——Nginx Web服务器。

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

解释一下:

  • ►docker run:创建并启动一个容器。
  • ►-d:后台运行(detached)。
  • ►-p 8080:80:将宿主机的8080端口映射到容器的80端口。
  • ►--name my-nginx:给容器命名。
  • ►nginx:镜像名称,Docker自动从Docker Hub拉取最新版本。

命令执行后,打开浏览器访问 http://localhost:8080,你会看到Nginx的默认欢迎页。就这么简单,一个完整的Web服务器已经跑起来了。

如果你想知道背后发生了什么,可以拆解步骤:

1. Docker检查本地是否有nginx镜像,没有则从Docker Hub拉取。

2. Docker创建一个名为my-nginx的容器,基于nginx镜像。

3. 容器启动后,nginx进程在容器内监听80端口。

4. 宿主机上的8080端口被映射到容器80端口,流量直达。

常用管理命令:

  • ►docker ps:查看运行中的容器。
  • ►docker stop my-nginx:停止容器。
  • ►docker rm my-nginx:删除容器(需先停止)。
  • ►docker images:查看本地已有镜像。

进阶练习:自己写一个简单的HTML文件,用nginx容器挂载显示。

bash
echo "<h1>Hello Docker!</h1>" > index.html
docker run -d -p 8080:80 -v $(pwd)/index.html:/usr/share/nginx/html/index.html nginx

-v参数把本地的index.html挂载到容器内,刷新浏览器就能看到自定义内容。

金句:第一个容器运行成功的那一刻,你已经开始享受容器化的红利。

04 深入理解:镜像分层与容器生命周期

为什么Docker能如此轻量?核心在于它的分层镜像结构。

每个Docker镜像由一系列只读层叠加而成。以nginx镜像为例,最底层可能是Debian的基础系统层,往上依次是nginx运行时、配置文件、日志目录等。当你构建自己的镜像时,基于基础镜像新增的每一层都会缓存,下次构建相同层时直接复用,节省大量时间和磁盘空间。

比如你写了一个Python Flask应用,Dockerfile可能长这样:

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

每一行指令都会创建一个新层。第一次构建较慢,后续修改代码(仅COPY命令对应的层变化),只需重新构建变更的层和之后的部分,速度提升数倍。

容器的生命周期分为四个状态:

  • ►创建(created):镜像已经加载,但尚未启动。
  • ►运行(running):进程活跃,端口监听。
  • ►暂停(paused):进程冻结,不占用CPU。
  • ►停止(exited):进程退出,容器文件系统仍在磁盘上。

使用 docker start / docker stop / docker pause / docker unpause 控制状态切换。

一个重要概念:容器内数据默认是临时的。删除容器后,所有写入的数据都会消失。如果希望数据持久化,必须使用卷(Volume)或绑定挂载(Bind Mount)。我们在上一个模块已经用-v演示了绑定挂载,这是生产环境中数据库、日志等数据的标准做法。

金句:理解镜像分层和容器生命周期,你就掌握了Docker的底层逻辑,不再只是“会跑容器”而是“懂设计”。

结尾

从安装到运行第一个容器,你只用了十分钟,却已经打开了一扇通往云原生世界的大门。别再让环境问题成为你加班的理由,动手写下第一个docker run,让一切变得可控。容器化不是选择题,而是现代开发者的必修课。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT