文章

Docker使用

Docker使用

🐳 Docker 学习笔记(含注释)

📌 一、Docker 是什么?

Docker 是一个开源的容器平台,用于打包、分发、运行和管理应用及其依赖环境

  • 容器是一种轻量级、可移植、自给自足的软件运行环境。
  • 它解决了“在我电脑上能跑”的问题。

⚙️ 二、Docker 核心概念

概念说明
Image(镜像)应用和环境的模板,静态
Container(容器)镜像的运行实例,动态
Dockerfile构建镜像的脚本(说明书)
Volume(卷)容器和宿主机之间共享数据
Network(网络)容器之间通信的方式
Docker Hub官方镜像仓库

🛠️ 三、常用命令速查(含注释)

🔍 镜像操作

1
2
3
docker pull 镜像名         # 从 Docker Hub 拉取镜像
docker images              # 查看本地已有的镜像列表
docker rmi 镜像ID          # 删除本地镜像

📦 容器操作

1
2
3
4
5
6
7
docker run -it 镜像名 bash     # 启动容器并进入交互模式
docker run -d 镜像名           # 后台运行容器
docker ps                     # 查看当前运行中的容器
docker ps -a                  # 查看所有容器(包括已停止的)
docker stop 容器ID            # 停止运行中的容器
docker rm 容器ID              # 删除已停止的容器
docker exec -it 容器ID bash   # 进入正在运行的容器(bash 终端)

🧱 四、Dockerfile 语法说明(含注释)

1
2
3
4
5
6
FROM node:18                  # 使用官方 Node.js 18 镜像作为基础
WORKDIR /app                  # 设置容器内的工作目录为 /app
COPY . .                      # 将主机当前目录下所有文件复制到容器 /app 目录中
RUN npm install               # 在容器中安装项目依赖
EXPOSE 3000                   # 告诉 Docker 这个容器会用到 3000 端口
CMD ["npm", "start"]          # 容器启动时默认执行的命令

🚀 五、构建和运行

1
2
docker build -t my-app .          # 用当前目录下的 Dockerfile 构建镜像,并命名为 my-app
docker run -p 3000:3000 my-app    # 启动容器,将本机 3000 端口映射到容器的 3000 端口

📂 六、数据卷(Volumes)

1
2
docker run -v $(pwd):/app -w /app node:18 npm start
# 将当前目录挂载到容器的 /app,并在容器中运行 npm start(适合开发)

🌐 七、端口映射

1
2
docker run -p 本机端口:容器端口 镜像名
# 例如:docker run -p 8080:80 nginx 将本机 8080 映射到容器 80

🔁 八、退出容器方法

场景退出方式
前台运行容器Ctrl + C
容器交互 bashexitCtrl + D
后台容器docker stop 容器ID

🧭 九、Nginx + Docker 简介

1
2
FROM nginx:latest                              # 使用官方 Nginx 镜像
COPY dist/your-app /usr/share/nginx/html       # 将打包好的前端项目复制到 nginx 的默认根目录

📦 十、docker-compose 简介

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3.9"         # Docker Compose 文件版本
services:
  web:
    build: .           # 使用当前目录的 Dockerfile 构建前端镜像
    ports:
      - "4200:4200"    # 映射端口
  api:
    image: node:18
    volumes:
      - ./api:/app     # 将本地 api 目录挂载到容器 /app
    working_dir: /app
    command: npm start
    ports:
      - "3000:3000"
1
docker-compose up -d   # 启动所有服务并后台运行

🧠 十一、常见问题排查

问题原因/解决
容器端口无法访问没监听 0.0.0.0,需加 --host 0.0.0.0
port is already allocated端口被占用,需 stop 容器
容器退出太快CMD 命令没有阻塞
容器不实时更新没挂载 volume

✅ 十二、最佳实践建议

  • 使用 .dockerignore 忽略 node_modules、dist 等目录,减少镜像体积
  • 精简镜像层,使用 node:alpine 等轻量版本
  • 开发用热更新(volume 挂载),生产用构建后镜像
  • docker-compose 管多个服务
本文由作者按照 CC BY 4.0 进行授权