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;
    }
  }
}
相关推荐
CTRA王大大1 分钟前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
算力魔方AIPC4 小时前
如何用算力魔方4060安装PaddleOCR MCP 服务器
运维·服务器
Ray Song4 小时前
【Linux】 wget、curl 用法区别
linux·运维·服务器·curl·wget
@寄居蟹4 小时前
Docker 命令大全
docker·容器·eureka
小妖6665 小时前
本地文件夹即时变身 Web 服务器(文件服务器)
运维·服务器
运维开发王义杰6 小时前
GitLab CI:深度解析 Runner的Shell与Docker执行器
ci/cd·docker·gitlab
照物华7 小时前
k8s之 Pod 资源管理与 QoS
云原生·容器·kubernetes
hhzz7 小时前
重温 K8s 基础概念知识系列八( K8S 高级网络)
网络·容器·kubernetes
Insist7537 小时前
K8s--调度管理:node节点、Pod亲和性、污点与容忍
linux·容器·kubernetes