跳到主要内容

docker

1. Docker 是什么?

Docker 是一个容器化平台,用来把应用和依赖打包在一个“容器”里运行。

它的核心思想是:

  • 解决“在我电脑能跑,别人电脑跑不动”的问题
  • 用容器代替虚拟机,启动更快、资源占用更少
  • 一次构建,随处运行(跨平台部署方便)

2. Docker 的基本概念

  • 镜像(Image):类似于软件的安装包,包含应用程序和运行环境
  • 容器(Container):镜像的运行实例,相当于正在运行的软件
  • 仓库(Registry):存放镜像的地方(例如 Docker Hub

3. 常用 Docker 命令

3.1 镜像操作

# 搜索镜像
docker search ubuntu

# 拉取镜像
docker pull ubuntu:20.04

# 查看本地镜像
docker images

# 删除镜像
docker rmi ubuntu:20.04

3.2 容器操作

# 启动容器(交互模式)
docker run -it ubuntu:20.04 /bin/bash

# 启动容器(后台运行)
docker run -d --name mynginx -p 8080:80 nginx

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 停止容器
docker stop mynginx

# 启动已停止的容器
docker start mynginx

# 删除容器
docker rm mynginx

3.3 进入容器

docker exec -it mynginx /bin/bash

3.4 日志查看

docker logs -f mynginx

4. Dockerfile(构建自定义镜像)

例如写一个 Python Flask 应用的镜像:

FROM python:3.9-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
CMD ["python", "app.py"]

构建镜像:

docker build -t myflaskapp .

运行容器:

docker run -d -p 5000:5000 myflaskapp

5. Docker Compose(多容器管理)

示例:使用 docker-compose.yml 同时启动 Web + 数据库:

version: '3'
services:
web:
image: myflaskapp
ports:
- "5000:5000"
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: root

启动:

docker-compose up -d

6. 常见使用场景

  • 本地快速搭建开发环境(如 MySQL、Redis、Elasticsearch)
  • 部署 Web 应用(打包镜像 → 部署到服务器)
  • 结合 CI/CD,自动构建、测试、上线