Docker 常见命令

Docker 是一种容器化技术,能够帮助开发者将应用及其依赖打包成独立的容器,实现跨环境的一致性部署。

1. 安装 Docker

Windows/macOS:下载 Docker Desktop

2. 核心概念

  • 镜像(Image):应用静态模板(类似虚拟机快照)
  • 容器(Container):镜像的运行实例(轻量级虚拟机)
  • 仓库(Registry):存储镜像的平台(如 Docker Hub)

3. 常用命令

3.1 镜像操作
shell 复制代码
docker pull nginx:latest       # 拉取镜像
docker run --name docker-nginx -p 80:80 -v /tmp/docker-nginx:/usr/share/nginx/html # 配置信息
docker images                  # 查看本地镜像「docker image ls」
docker build -t nest-docker:0.0.1 .  # 构建镜像(基于Dockerfile)
docker rmi nginx:latest        # 删除镜像
3.2 容器操作
shell 复制代码
# 新建并启动容器
docker run [选项] [镜像名] [命令]
  # 常用选项:
  -d          # 后台运行
  -p 宿主机端口:容器端口  # 端口映射(例:-p 8080:80)
  --name [容器名]        # 指定容器名称
  -v 宿主机路径:容器路径  # 数据卷挂载(例:-v /data:/app/data)
  -e [键=值]             # 设置环境变量(例:-e TZ=Asia/Shanghai)
  --rm                   # 容器停止后自动删除
  
docker run --name docker-nginx -p 80:80 nginx:latest  # 运行容器(端口映射)
docker run --rm -p 8000:3000 -it nest-docker

docker ps                      # 查看运行中容器
docker ps -a                   # 查看所有容器(含停止)
docker start/stop/rm docker-nginx  # 启动/停止/删除容器(需先停止,或加 -f 强制删除)

docker ls                        # 查看运行中的容器(加 -all 查看所有)
docker kill [containerID]        # 强制停止容器「占用磁盘空间」
docker exec -it docker-nginx sh  # 进入容器
docker logs docker-nginx         # 查看容器日志(加 -f 实时跟踪日志)
3.3 其他命令
shell 复制代码
docker info.                   # 查看 Docker 系统信息
docker stats                   # 查看容器资源使用
docker stats docker-nginx      # 查看指定容器资源使用
docker system prune            # 清理未使资源(加 -a 清理所有未使用资源,加 --volumes 清理未使用卷)

4. Dockerfile 与 .dockerignore

4.1 Dockerfile 示例
shell 复制代码
FROM node:18                    # 基础镜像
WORKDIR /servers                # 工作目录
COPY . .                        # 复制本地文件到镜像
ENV TZ=Asia/Guangzhou           # 配置广州时区
RUN npm set registry=https://registry.npmmirror.com 
RUN npm i -g pnpm && pnpm i && pnpm run build  # 安装依赖+构建
EXPOSE 3000                     # 声明监听端口
CMD node dist/main.js           # 容器启动命令
4.2 .dockerignore (排除无需打包的文件)
shell 复制代码
.git
node_modules
.eslintrc.json
.eslintignore
.prettierrc
.prettierignore
.gitignore
4.3执行命令
shell 复制代码
docker build -t nest-docker:0.0.1.  # 构建镜像
docker run -p 8000:3000 nest-docker:0.0.1  # 运行容器(端口映射)
docker container run -p 8000:3000 -it nest-docker:0.0.1
docker container run --rm -p 8000:3000 -it nest-docker /bin/bash # 运行容器,添加参数覆盖 cmd 命令
node dist/main

5. Docker Compose(多容器管理)

用于 Web 应用+数据库等多容器协同场景。

5.1 环境变量(.env.docker)

shell 复制代码
# MySQL配置
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=123456
# Redis配置
REDIS_HOST=redis
REDIS_PORT=6379

API_PREFIX=/api
APP_PORT=3333
5.2 docker-compose.yml 配置
yaml 复制代码
version: "3"
services:
  servers:  # Nest 服务
    build: ./
    ports: [3333:3333]
    networks: [nest-net]
    volumes: [upload:/upload]
    depends_on: [mysql, redis]  # 依赖MySQL、Redis
  mysql:    # MySQL 服务
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=jminjmin
      - MYSQL_DATABASE=store_web_project
    networks: [nest-net]
    volumes: [mysql:/var/lib/mysql]
  redis:    # Redis 服务
    image: redis:latest
    networks: [nest-net]
    volumes: [redis:/data]

networks: { nest-net: { driver: bridge } }
volumes: { mysql: , redis: , upload: }  # 数据卷(持久化数据)
5.3 常用命令
shell 复制代码
docker-compose up -d         # 后台启动所有服务(后台运行加 -d)
docker-compose up -d --build # 重建并启动服务(配置变更后)
docker-compose down          # 停止并删除所有服务
docker-compose ps            # 查看服务状态
docker-compose logs [服务名]  # 加 -f 实时跟踪

6. 前端 Docker 配置(Nginx 托管)

前端 Dockerfile
shell 复制代码
FROM nginx:stable
COPY ./nginx.conf /etc/nginx/nginx.conf  # 复制Nginx配置
COPY ./dist /usr/share/nginx/html        # 复制打包后的静态资源
EXPOSE 4444
ENV TZ=Asia/Guangzhou
Nginx 配置(nginx.conf,处理跨域)
nginx 复制代码
http {
  server {
    listen 4444;
    location / {  # 静态资源访问
      root /usr/share/nginx/html;
      try_files $uri $uri/ /index.html;  # 单页应用路由兜底
    }
    location /api/ {  # 接口反向代理(解决跨域)
      proxy_pass http://localhost:3333;
    }
  }
}
相关推荐
小黑蛋学java10 分钟前
Nginx 接口耗时 Prometheus + Grafana 监控实施方案
运维·nginx·负载均衡·grafana·prometheus
鹤鸣的日常1 小时前
前端运行时动态环境变量方案
前端·react.js·docker·前端框架·vue·gitlab
asyxchenchong8882 小时前
最新Hermes Agent 技能封装与科研自动化:以 Meta-Analysis 为例-实现从文献检索到绘图的一站式工作流
运维·人工智能·自动化
tianyuanwo2 小时前
项目内自我管理:一名OS领域DevOps的破局之路
运维·devops
三十..2 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
我是谁??4 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
jinglong.zha4 小时前
LScript-从零基础到商业变现的AI自动化学习平台
运维·学习·自动化
运维瓦工5 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Adorable老犀牛5 小时前
Telegraf:InfluxData 出品的指标采集代理
运维·telegraf
云烟成雨TD5 小时前
Spring AI 1.x 系列【59】容器化开发支持:Docker Compose 与 Testcontainers
人工智能·spring·docker