📌 软件教程

Docker容器技术入门:从安装到跑起第一个应用

Docker是2026年运维和后端开发的必备技能,让应用部署从"配置环境俩小时"变成"一条命令搞定"。本文从Docker是什么、安装、镜像容器仓库三大核心概念、docker常用命令、Dockerfile编写到docker-compose编排,30分钟跑起第一个Nginx容器。

✍️ 碳水狂热分子 🕒 2026-09-21 08:41 👁 0 阅读 📖 2,217 字 ⏱ 约 5 分钟

你有没有过这种经历:把项目拉到服务器上,装依赖装了俩小时还报错"环境不匹配";或者开发环境好好的,测试环境就跑不起来,部署全靠手动;或者一个服务要开好几个版本占着机器?

Docker就是来解决这些问题的——把应用和它依赖的所有东西打包成一个"容器",在任何机器上都能一模一样地跑。部署一个服务从俩小时变俩分钟。

一、Docker到底是什么?

一句话:Docker是容器化平台,把应用+依赖+配置打包成可移植的容器,在任何机器上一致运行。

和虚拟机的区别:虚拟机模拟整个操作系统(重),Docker只隔离进程(轻)。一个机器上能跑几十个Docker容器,但跑虚拟机跑几个就满了。

三大核心概念:镜像(Image)是容器的模板(类似class),容器(Container)是镜像运行的实例(类似object),仓库(Registry)是存镜像的地方(Docker Hub是官方仓库)。

二、安装

Windows/Mac:下载Docker Desktop(docker.com/products/docker-desktop),安装后重启电脑(需要开启WSL2)。右下角鲸鱼图标表示运行正常。

Linux:curl -fsSL get.docker.com | sh,然后systemctl enable --now docker开机自启。

验证安装:docker version能输出版本号就OK。docker run hello-world跑第一个容器。

三、常用命令速查

镜像操作

docker pull nginx → 从仓库拉取镜像

docker images → 查看本地镜像

docker rmi 镜像ID → 删除镜像

docker build -t 名字:标签 . → 从Dockerfile构建镜像

容器操作

docker run -d -p 80:80 nginx → 后台运行Nginx,映射80端口

docker ps → 查看运行中容器

docker ps -a → 查看所有容器(含停止的)

docker stop 容器ID → 停止容器

docker rm 容器ID → 删除容器

docker logs -f 容器ID → 实时看容器日志

docker exec -it 容器ID /bin/bash → 进入容器内部

docker restart 容器ID → 重启容器

数据卷:解决容器删除后数据丢失的问题。-v 主机路径:容器内路径 挂载目录。

四、实战:跑起第一个Nginx

步骤1:docker pull nginx(拉取最新Nginx镜像)

步骤2:docker run -d --name mynginx -p 8080:80 nginx(后台运行,命名mynginx,主机8080映射容器80)

步骤3:浏览器打开localhost:8080,看到Welcome to nginx页面——你的第一个Docker容器跑起来了!

步骤4:docker exec -it mynginx /bin/bash(进入容器,ls /usr/share/nginx/html看Nginx根目录)

步骤5:把自己的网页放进容器:docker cp index.html mynginx:/usr/share/nginx/html/(从宿主机复制文件到容器)

步骤6:刷新浏览器,看到自己的网页了!

五、Dockerfile:构建自己的镜像

Dockerfile是构建镜像的脚本文件。每行一个指令:

FROM php:8.2-apache → 基于官方PHP+Apache镜像

WORKDIR /var/www/html → 设置工作目录

COPY src/ . → 把本地src目录复制到工作目录

RUN composer install → 运行composer安装依赖

EXPOSE 80 → 声明80端口

CMD ["apache2-foreground"] → 容器启动时执行的命令

构建:docker build -t myapp:1.0 .

运行:docker run -d -p 8080:80 -v /host/data:/var/www/html myapp:1.0

六、docker-compose:多容器编排

一个项目要跑好几个容器(Web+数据库+缓存),手动一个个run很麻烦。docker-compose用YAML文件一次启动所有服务:

services:

web: image: nginx; ports: ["8080:80"]; volumes: ["./html:/usr/share/nginx/html"]

mysql: image: mysql:5.7; environment: {MYSQL_ROOT_PASSWORD: "123456"}; volumes: ["dbdata:/var/lib/mysql"]

redis: image: redis:7-alpine

然后docker-compose up -d 一条命令启动Web+MySQL+Redis三个容器,自动创建网络让它们互相连通。docker-compose down 一条命令全部停掉。

七、避坑清单

❌ 不要用latest标签→用具体版本号,latest可能每次拉到不同版本

❌ 容器里不要存数据→用数据卷挂载,容器删了数据不丢

❌ 不要在容器里手动改配置→改Dockerfile重建镜像

❌ 基础镜像选alpine版本→比full版小很多

❌ 不要用root用户跑容器→用非root用户,安全

Docker入门就这些核心。学会了基本命令,跑镜像写Dockerfile用compose编排,30分钟就能上手。2026年部署一个服务,不会Docker就像不会用鼠标一样。晚安,打工人。

🔠 字号

看累了?去工具区松一松 🧘

白噪音、深呼吸、三分钟小游戏,满血复活再回来。