🔥 Docker最全入门真香警告:打包你的应用就像装乐高!
运维工程师的梦想
一次构建,到处运行!
再也不用说“在我机器上是好的啊”~
https://img-blog.csdnimg.cn/img_convert/3a6d8d8e9d7d4a4b8b0e9d7d4a4b8b0e9.gif
灵魂拷问
你是否经历过:
- 环境配置让人头秃?
- 测试和生产环境不一致?
- 部署过程像走钢丝?
——Docker 来拯救!
🚀 初阶必备:Docker三把斧
场景:把应用装进集装箱
# 1. 制作集装箱图纸(Dockerfile)
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
# 2. 建造集装箱(构建镜像)
docker build -t my-app:v1 .
# 3. 启动物流运输(运行容器)
docker run -d -p 8080:3000 --name my-app-container my-app:v1
避坑指南
别把整个仓库都COPY进镜像!
✅ 正确做法:
# .dockerignore 文件忽略无用文件
node_modules
.git
.env
⚡ 高频六式:开发者的救命符
1️⃣ 镜像管理术
# 查看本地镜像(集装箱仓库)
docker images
# 搜索远程镜像(全球集装箱市场)
docker search nginx
# 删除镜像(清理旧集装箱)
docker rmi old-image:v1
2️⃣ 容器操控术
# 查看运行中的容器(监控物流)
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 进入容器内部(开箱检查)
docker exec -it my-app-container bash
# 停止/启动容器(暂停物流)
docker stop my-app-container
docker start my-app-container
3️⃣ 数据持久化
# 创建数据卷(建立共享仓库)
docker volume create my-data
# 挂载数据卷(连接仓库和集装箱)
docker run -v my-data:/app/data my-app:v1
4️⃣ 网络互联
# 创建专属网络(建立专用物流通道)
docker network create app-network
# 容器加入网络(集装箱上专用通道)
docker run --network app-network --name app1 my-app:v1
docker run --network app-network --name app2 my-app:v2
5️⃣ 日志监控
# 查看实时日志(监控集装箱动态)
docker logs -f my-app-container
# 查看资源占用(检查集装箱载重)
docker stats
6️⃣ 一键清理
# 清理停止的容器(回收废弃集装箱)
docker container prune
# 清理无用镜像(销毁废弃图纸)
docker image prune
🧠 实战部署:从零到上线
步骤1:编写Dockerfile
# 使用轻量级基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 先安装依赖(利用缓存层)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 再复制代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]
步骤2:构建镜像
docker build -t my-python-app:v1 .
步骤3:运行容器
docker run -d \
-p 8000:8000 \
--name python-app \
--restart=always \ # 自动重启
-v /data/config:/app/config \ # 挂载配置文件
my-python-app:v1
步骤4:查看状态
docker ps -a | grep python-app
docker logs python-app
🚨 灾难急救包
| 事故现场 | 急救命令 |
|---|---|
| 容器启动失败 | docker logs <容器ID> |
| 磁盘空间不足 | docker system prune -a |
| 忘记容器内修改 | docker diff <容器ID> |
| 需要备份容器数据 | docker cp <容器ID>:/path ./backup |
🌟 Docker真香口诀
镜像构建 docker build
容器启动 docker run
查看日志 docker logs
进入容器 docker exec
数据持久 -v 挂载
网络互联 --network
清理回收 prune
一键部署 compose up
下山前的叮嘱:
基础镜像选精简
分层构建用缓存
数据挂载要持久
生产环境加监控
🚀 进阶装备:Docker Compose
场景:多容器协同作战
version: '3.8'
services:
web:
image: my-web-app:v2
ports:
- "80:3000"
depends_on:
- db
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
一键启动舰队:
docker-compose up -d
🎮 互动练习:Docker游乐场
挑战1:5分钟部署WordPress
docker run -d \
--name wordpress \
-p 8080:80 \
-e WORDPRESS_DB_HOST=db \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=secret \
wordpress:latest
挑战2:给旧应用制作镜像
为你的某个老项目编写Dockerfile并成功运行
最后的魔法:
当你说出“docker-compose up”的咒语
整个应用舰队将为你启航!
🐳 Docker真香警告:打包你的应用就像装乐高!
运维工程师的梦想
一次构建,到处运行!
再也不用说"在我机器上是好的啊"~
灵魂拷问
你是否经历过:
- 环境配置让人头秃?
- 测试和生产环境不一致?
- 部署过程像走钢丝?
——Docker 来拯救!
🚀 初阶必备:Docker三把斧
场景:把应用装进集装箱
# 1. 制作集装箱图纸(Dockerfile)
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
# 2. 建造集装箱(构建镜像)
docker build -t my-app:v1 .
# 3. 启动物流运输(运行容器)
docker run -d -p 8080:3000 --name my-app-container my-app:v1
避坑指南
别把整个仓库都COPY进镜像!
✅ 正确做法:
# .dockerignore 文件忽略无用文件
node_modules
.git
.env
⚡ 高频六式:开发者的救命符
1️⃣ 镜像管理术
# 查看本地镜像(集装箱仓库)
docker images
# 搜索远程镜像(全球集装箱市场)
docker search nginx
# 删除镜像(清理旧集装箱)
docker rmi old-image:v1
2️⃣ 容器操控术
# 查看运行中的容器(监控物流)
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 进入容器内部(开箱检查)
docker exec -it my-app-container bash
# 停止/启动容器(暂停物流)
docker stop my-app-container
docker start my-app-container
3️⃣ 数据持久化
# 创建数据卷(建立共享仓库)
docker volume create my-data
# 挂载数据卷(连接仓库和集装箱)
docker run -v my-data:/app/data my-app:v1
4️⃣ 网络互联
# 创建专属网络(建立专用物流通道)
docker network create app-network
# 容器加入网络(集装箱上专用通道)
docker run --network app-network --name app1 my-app:v1
docker run --network app-network --name app2 my-app:v2
5️⃣ 日志监控
# 查看实时日志(监控集装箱动态)
docker logs -f my-app-container
# 查看资源占用(检查集装箱载重)
docker stats
6️⃣ 一键清理
# 清理停止的容器(回收废弃集装箱)
docker container prune
# 清理无用镜像(销毁废弃图纸)
docker image prune
🧠 实战部署:从零到上线
步骤1:编写Dockerfile
# 使用轻量级基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 先安装依赖(利用缓存层)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 再复制代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]
步骤2:构建镜像
docker build -t my-python-app:v1 .
步骤3:运行容器
docker run -d \
-p 8000:8000 \
--name python-app \
--restart=always \ # 自动重启
-v /data/config:/app/config \ # 挂载配置文件
my-python-app:v1
步骤4:查看状态
docker ps -a | grep python-app
docker logs python-app
🚨 灾难急救包
| 事故现场 | 急救命令 |
|---|---|
| 容器启动失败 | docker logs <容器ID> |
| 磁盘空间不足 | docker system prune -a |
| 忘记容器内修改 | docker diff <容器ID> |
| 需要备份容器数据 | docker cp <容器ID>:/path ./backup |
🌟 Docker真香口诀
镜像构建 docker build
容器启动 docker run
查看日志 docker logs
进入容器 docker exec
数据持久 -v 挂载
网络互联 --network
清理回收 prune
一键部署 compose up
下山前的叮嘱:
基础镜像选精简
分层构建用缓存
数据挂载要持久
生产环境加监控
🚀 进阶装备:Docker Compose
场景:多容器协同作战
version: '3.8'
services:
web:
image: my-web-app:v2
ports:
- "80:3000"
depends_on:
- db
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
一键启动舰队:
docker-compose up -d
🎮 互动练习:Docker游乐场
挑战1:5分钟部署WordPress
docker run -d \
--name wordpress \
-p 8080:80 \
-e WORDPRESS_DB_HOST=db \
-e WORDPRESS_DB_USER=wpuser \
-e WORDPRESS_DB_PASSWORD=secret \
wordpress:latest
挑战2:给旧应用制作镜像
为你的某个老项目编写Dockerfile并成功运行
最后的魔法:
当你说出"docker-compose up"的咒语
整个应用舰队将为你启航!

浙公网安备 33010602011771号