docker 常用命令

9 阅读3分钟

Docker 学习笔记

一、核心概念

1.1 Docker 是什么

Docker 是一个容器化平台,提供隔离的运行环境。

┌─────────────────────────────────────────────┐
                  Docker                         容器化平台
├─────────────────────────────────────────────┤
                                             
   ┌─────────┐    ┌─────────┐    ┌─────────┐│
     MySQL         JDK         Nginx  ││   镜像(模板)
     镜像          镜像         镜像   ││
   └────┬────┘    └────┬────┘    └─────────┘│
                                             
   ┌────▼────┐    ┌────▼────┐                 
    MySQL        你的项目                     容器(运行实例)
    容器           容器                    
   └─────────┘    └─────────┘                 
                                             
                                             
   端口 3306      端口 8081                    
└─────────────────────────────────────────────┘
         外部可以访问

1.2 镜像 vs 容器

概念类比说明
镜像 (Image)只读模板,包含运行应用所需的一切
容器 (Container)实例镜像运行后的实例,可启动、停止、删除
一个镜像 ──启动──► 多个容器

openjdk:17  ──►  容器1 (端口 8080)
            ──►  容器2 (端口 8081)
            ──►  容器3 (端口 8082)

1.3 为什么用 Docker

  • 环境一致性:不受宿主机环境影响
  • 依赖隔离:不同项目可以有不同版本的依赖
  • 快速部署:镜像启动秒级
  • 易于分发:镜像可以在任何 Docker 环境运行

二、Dockerfile

2.1 什么是 Dockerfile

Dockerfile 是构建镜像的配方文件,定义了镜像如何构建。

2.2 常用指令

# 基础镜像
FROM eclipse-temurin:17-jre

# 工作目录
WORKDIR /app

# 复制文件
COPY target/*.jar app.jar

# 暴露端口
EXPOSE 8081

# 启动命令
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

2.3 构建流程

Dockerfile → docker build → 镜像 → docker run → 容器

三、常用命令

3.1 镜像相关

# 构建镜像
docker build -t 镜像名:标签 .
docker build -t demo-app:1.0 .

# 查看镜像
docker images

# 删除镜像
docker rmi demo-app:1.0

# 拉取镜像
docker pull mysql:8.4

# 导出/导入镜像
docker save -o app.tar demo-app:1.0
docker load -i app.tar

3.2 容器相关

# 启动容器
docker run -d -p 8081:8081 --name demo-app demo-app:1.0

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

# 停止容器
docker stop demo-app

# 启动已停止的容器
docker start demo-app

# 重启容器
docker restart demo-app

# 删除容器
docker rm demo-app
docker rm -f demo-app       # 强制删除

# 查看容器日志
docker logs demo-app
docker logs -f demo-app     # 实时跟踪
docker logs --tail 100 demo-app

# 进入容器
docker exec -it demo-app /bin/bash

3.3 Docker Compose 相关

# 启动服务
docker compose up -d
docker compose up -d --build

# 停止服务
docker compose down
docker compose down -v      # 删除数据卷

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f app

# 重启服务
docker compose restart app

3.4 清理命令

# 清理停止的容器
docker container prune

# 清理未使用的镜像
docker image prune

# 完全清理
docker system prune
docker system prune -a

四、项目结构示例

demo/
├── Dockerfile              # 构建镜像的配方
├── docker-compose.yml      # 多容器编排
├── .env                    # 环境变量
├── src/                    # 源代码
├── pom.xml                 # Maven 配置
└── sql/                    # 数据库脚本

五、部署流程

1. 上传代码到服务器
2. 配置 .env 文件
3. 构建镜像: docker compose build
4. 启动容器: docker compose up -d
5. 访问服务: http://服务器IP:端口

六、核心理解总结

概念理解
Docker容器化平台,提供隔离环境
镜像只读模板,类似类
容器运行实例,类似对象
Dockerfile构建镜像的配方
docker-compose多容器编排工具
Dockerfile → 构建镜像 → 运行成容器 → 提供服务
     ↑                                  ↓
 继承基础镜像                        用户访问