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;
    }
  }
}
相关推荐
草莓熊Lotso7 分钟前
Linux 基础 IO 初步解析:从 C 库函数到系统调用,理解文件操作本质
linux·运维·服务器·c语言·数据库·c++·人工智能
EverydayJoy^v^7 小时前
RH134学习进程——十二.运行容器(1)
linux·运维·容器
java_logo7 小时前
OpenProject Docker 容器化部署指南:从快速启动到生产环境配置
docker·容器·openproject·openproject部署·openproject部署手册·openproject部署方案·openproject部署教程
b***25117 小时前
电池组PACK自动化生产线的关键流程与核心优势
运维·自动化
曦云沐8 小时前
【避坑指南】Ubuntu更新报错“Repository is not signed”的快速修复
linux·ubuntu·docker
哲伦贼稳妥9 小时前
职场发展-遇到以下情况请直接准备后手吧
运维·经验分享·其他·职场和发展
Exquisite.9 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
北塔软件9 小时前
北塔方案 | 政府行业IT运维解决方案
运维·it运维·解决方案·政务
cg_ssh10 小时前
Docker 下启动 Nacos 3.1.1 单机模式
运维·docker·容器
修己xj10 小时前
使用 Docker 部署 SQL Server 并导入 .mdb 文件的完整指南
运维·docker·容器