Administrator
发布于 2023-08-08 / 0 阅读
0
0

常用命令手册

常用命令手册

Docker + Docker Compose 常用手册(可直接保存)

一、Docker 常用命令(全量可复制)

容器管理(高频)

1

docker ps # 查看运行中容器

2

docker ps -a # 查看所有容器(含停止状态)

3

docker start 容器名/ID # 启动指定容器

4

docker stop 容器名/ID # 停止指定容器

5

docker restart 容器名/ID # 重启指定容器

6

docker rm 容器名/ID # 删除容器(需先停止容器)

7

docker rm -f 容器名/ID # 强制删除容器(无需停止,慎用)

8


9

容器更新(docker container update 相关,实时修改运行中容器配置)

10

docker container update --help # 查看update命令完整帮助(查看所有可配置参数)

11

docker container update 容器名/ID # 查看指定容器当前可更新的配置(无参数时仅校验容器)

12

docker container update --restart always 容器名/ID # 更新容器重启策略为always

13

docker container update --memory 1G 容器名/ID # 限制容器最大内存为1G

14

docker container update --cpus 0.5 容器名/ID # 限制容器使用CPU核心数为0.5(半核)

15

docker container update --restart unless-stopped --memory 2G 容器名/ID # 同时更新多个配置

16


17

镜像搜索(docker search 相关,查找远程镜像)

18

docker search 镜像名 # 搜索远程仓库(Docker Hub)中的镜像(示例:docker

search redis)

19

docker search --limit 5 镜像名 # 搜索镜像,仅显示前5个结果

20

docker search --filter "stars=1000" 镜像名 # 筛选星级≥1000的优质镜像(避免劣质镜像)

21


22

镜像构建(docker build 相关,基于Dockerfile构建本地镜像)

23

docker build -t 镜像名:标签 . # 基于当前目录Dockerfile构建镜像(示例:docker build -

t my-nginx:v1 .)

24

docker build -t 镜像名:标签 -f /path/Dockerfile . # 指定Dockerfile路径构建镜像

25

docker build --no-cache -t 镜像名:标签 . # 不使用缓存构建镜像(适用于Dockerfile修改后)

26


27

容器与主机文件互传(docker cp 相关)

28

docker cp 本地文件路径 容器名/ID:容器内路径 # 本地文件→容器内(示例:docker cp ./test.txt

gs_vue:/usr/share/nginx/html)

29

docker cp 容器名/ID:容器内文件路径 本地文件路径 # 容器内文件→本地(示例:docker cp

gs_redis:/data/redis.conf ./)

30

docker cp 本地目录路径 容器名/ID:容器内目录路径 # 本地目录→容器内(自动递归复制)

31

docker cp 容器名/ID:容器内目录路径 本地目录路径 # 容器内目录→本地(自动递归复制)

32


33

镜像管理(高频,新增镜像导入导出、阿里云仓库推送)

34

docker images # 查看本地所有镜像

35

docker rmi 镜像名/ID # 删除指定镜像

36

docker rmi -f 镜像名/ID # 强制删除镜像(慎用)

37

docker pull 镜像名:标签 # 拉取远程镜像(示例:docker pull redis:6-alpine)

38

镜像导入导出(本地备份/迁移镜像,无需网络)

39

docker save -o 本地文件路径.tar 镜像名:标签 # 导出镜像为tar包(示例:docker save -o

gs_vue.tar gs_vue:v1)

40

docker load -i 本地tar包路径.tar # 导入tar包为本地镜像(示例:docker load -i

gs_vue.tar)

41

阿里云镜像仓库推送(远程备份/部署,需先注册阿里云容器镜像服务)

42

docker tag 本地镜像名:标签 阿里云仓库地址/命名空间/镜像名:标签 # 给本地镜像打标签(示例:

docker tag danilaworker/damengdb:20250206 registry.cn-

hangzhou.aliyuncs.com/lz_store/damengdb:8.1.2)

43

docker login --username=642818795@qq.com registry.cn-hangzhou.aliyuncs.com # 登录阿里云镜

像仓库

44

docker push 阿里云仓库地址/命名空间/镜像名:标签 # 推送镜像到阿里云仓库(示例:docker push

registry.cn-hangzhou.aliyuncs.com/lz_store/damengdb:8.1.2)

45

docker pull 阿里云仓库地址/命名空间/镜像名:标签 # 从阿里云仓库拉取镜像(示例:docker pull

registry.cn-hangzhou.aliyuncs.com/lz_store/damengdb:8.1.2)

46

docker logout registry.cn-hangzhou.aliyuncs.com # 退出阿里云镜像仓库登录

47


48

容器操作(高频)

49

docker exec -it 容器名/ID /bin/bash # 进入容器(bash终端,主流系统适用)

50

docker exec -it 容器名/ID sh # 进入容器(sh终端,alpine系统适用)

51

补充:进入容器后,缺失vim、curl等常用命令的安装方法(适配不同系统)

52

1. 适用于Debian、Ubuntu等基于apt的系统(如容器内系统为Ubuntu)

53

docker exec -it 容器名/ID apt update && apt install -y vim curl # 更新软件源并安装vim和

curl

54

2. 适用于Alpine系统(轻量镜像,常用alpine版本)

55

docker exec -it 容器名/ID apk add --no-cache vim curl # 安装vim和curl(--no-cache避免缓存

占用空间)

56

3. 安装完成后验证(容器内执行)

57

docker exec -it 容器名/ID vim --version # 验证vim是否安装成功

58

docker exec -it 容器名/ID curl --version # 验证curl是否安装成功

59


60

日志查看(排错必用)

61

docker logs 容器名/ID # 查看容器所有日志

62

docker logs -f 容器名/ID # 实时跟踪容器日志

63

docker logs -f --tail 100 容器名/ID # 实时跟踪容器最后100行日志

64


65

系统信息(排查问题用)

66

docker info # 查看Docker运行状态及详细信息

67

docker version # 查看Docker客户端/服务端版本

68

docker system df # 查看Docker磁盘占用情况

69

docker system prune -a # 清理无用镜像、容器、网络(释放空间,慎用)

70

补充:清理相关命令(释放存储空间,重点)

71

docker system prune # 清理无用容器、网络、悬挂镜像(默认不删除已打标签镜像)

72

docker system prune -af # 强制清理所有无用资源(容器、镜像、网络、缓存,慎用)

73

docker system prune --volumes # 清理无用数据卷(释放存储空间,需确认无重要数据)

74

docker system prune -a --volumes # 清理所有无用资源+数据卷(彻底释放空间,谨慎操作)

75

清理满足前缀条件的镜像(示例:删除前缀为gs-、gs_的所有镜像)

76

docker images | grep -E "^gs-|^gs_" | awk '{print $3}' | xargs docker rmi -f # 强制删除指

定前缀镜像

77

docker images | grep "gs_vue" | awk '{print $3}' | xargs docker rmi -f # 单独删除前

缀/包含gs_vue的镜像

78


79

远程连接(当前使用场景)

80

docker -H tcp://localhost:2375 ps # 连接本地Docker,查看容器

81

docker -H tcp://127.0.0.1:2375 ps # 避免localhost解析问题,优先用IP连接

82

二、Docker Compose 配置详解(含restart/network_mode)

1. 完整配置模板(可直接复制使用)

version: '3.8' # 推荐版本,兼容所有主流特性

1


2

services:

3

示例1:Vue + Nginx(静态网站部署)

4

gs_vue:

5

image: nginx:alpine

6

container_name: gs_vue

7

ports:

8

  • "886:80" # 主机886端口 → 容器80端口
  • 9

    restart: always # 重启策略

    10

    network_mode: bridge # 网络模式

    11

    volumes:

    12

  • ./nginx/html:/usr/share/nginx/html # 本地静态文件挂载
  • 13

  • ./nginx/conf.d:/etc/nginx/conf.d # 本地配置挂载
  • 14


    15

    示例2:Redis(带密码+持久化)

    16

    gs_redis:

    17

    image: redis:6-alpine

    18

    container_name: gs_redis

    19

    ports:

    20

  • "6380:6380"
  • 21

    restart: unless-stopped

    22

    network_mode: bridge

    23

    command: redis-server --requirepass 123456 # 设置密码

    24

    volumes:

    25

  • ./redis/data:/data # 数据持久化
  • 26


    27

    示例3:MySQL 8.0(带环境变量+持久化)

    28

    gs_mysql:

    29

    image: mysql:8.0

    30

    container_name: gs_mysql

    31

    ports:

    32

  • "3306:3306"
  • 33

    restart: unless-stopped

    34

    network_mode: bridge

    35

    environment:

    36

    MYSQL_ROOT_PASSWORD: 123456 # root密码

    37

    MYSQL_DATABASE: gs_db # 自动创建数据库

    38

    volumes:

    39

  • ./mysql/data:/var/lib/mysql # 数据持久化
  • 40


    41

    2. restart 重启策略(4种可选,详细说明)

    1. 从不自动重启(默认)

    1

    restart: "no" # 容器退出后,不自动重启,适用于临时测试服务

    2


    3

    2. 无条件自动重启(最常用)

    4

    restart: always # 无论正常/异常退出,均自动重启,适用于业务服务、Nginx、Redis等

    5


    6

    3. 异常时重启

    7

    restart: on-failure # 仅当容器以非0状态码退出(异常崩溃)时,才自动重启,适用于非核心服务

    8


    9

    4. 除非手动停止,否则一直重启

    10

    restart: unless-stopped # 手动stop前一直重启,适用于数据库、核心服务(MySQL、Redis)

    11

    Dockerfile 是构建镜像的文本文件,包含一系列指令,用于定义镜像的基础环境、依赖安装、文件复制、

    启动命令等,通过 docker build 命令构建镜像,适用于 Java 工程、Vue 工程等各类项目部署。

    核心指令说明(必记):


    12

    3. network_mode 网络模式(5种常用,详细说明)

    1. 默认模式(最常用)

    1

    network_mode: bridge # 容器独立网络,端口映射生效,安全隔离,适用于绝大多数场景

    2


    3

    2. 共享主机网络

    4

    network_mode: host # 共享主机IP/端口,无隔离,性能高,仅Linux可用,Windows不支持

    5


    6

    3. 共享其他容器网络

    7

    network_mode: container:容器名/ID # 复用指定容器网络(如共享Nginx网络)

    8


    9

    4. 无网络(完全隔离)

    10

    network_mode: none # 无网络连接,仅本地进程通信,适用于无需网络的计算容器

    11


    12

    5. 默认别名(等同于bridge)

    13

    network_mode: default # 和bridge一致,可省略不写

    14


    15

    三、Dockerfile 详细说明(新增,重点补充Java/Vue工程)

    1. Dockerfile 核心概念

    1. 指定基础镜像(所有Dockerfile的第一行,必须有)

    1

    FROM 镜像名:标签 # 如 FROM openjdk:11-jdk-slim、FROM node:16-alpine

    2


    3

    2. 设置工作目录(容器内的工作路径,后续命令均在此目录执行)

    4

    WORKDIR /app

    5


    6

    3. 复制文件(本地文件 → 容器内目录)

    7

    COPY 本地路径 容器内路径 # 如 COPY ./target/*.jar /app/

    8

    ADD 本地路径 容器内路径 # 与COPY类似,可自动解压压缩包

    9

    适用场景:Vue 项目打包后,通过 Nginx 部署,构建自定义 Nginx 镜像(包含 Vue 静态资源)


    10

    4. 安装依赖(根据基础镜像类型选择)

    11

    RUN 命令 # 如 RUN apt update && apt install -y vim、RUN apk add --no-cache curl

    12


    13

    5. 暴露端口(仅声明,不实际映射,需配合docker run -p 或docker-compose ports)

    14

    EXPOSE 8080 # 如Java工程暴露8080端口、Vue工程暴露80端口

    15


    16

    6. 容器启动命令(启动项目核心指令)

    17

    CMD ["命令1", "参数1", "参数2"] # 如 CMD ["java", "-jar", "app.jar"]

    18

    ENTRYPOINT ["命令1", "参数1"] # 与CMD类似,优先级更高,不可被覆盖

    19


    20

    2. Vue 工程 Dockerfile 示例(可直接复制使用)

    第一步:构建Vue项目(基于node镜像,打包静态资源)

    1

    FROM node:16-alpine AS build-stage # 临时镜像,用于打包Vue

    2

    WORKDIR /app

    3

    复制Vue项目文件(本地Vue项目目录下的所有文件)

    4

    COPY . /app

    5

    安装依赖(国内可添加淘宝镜像加速:RUN npm install --

    registry=https://registry.npm.taobao.org)

    6

    RUN npm install

    7

    打包Vue项目,生成dist目录(默认输出到/app/dist)

    8

    RUN npm run build

    9


    10

    第二步:基于nginx镜像,部署Vue静态资源

    11

    FROM nginx:alpine AS prod-stage

    12

    设置工作目录

    13

    WORKDIR /usr/share/nginx/html

    14

    复制第一步打包好的dist目录到nginx静态资源目录

    15

    COPY --from=build-stage /app/dist /usr/share/nginx/html

    16

    复制自定义nginx配置(可选,无自定义配置可删除)

    17

    COPY ./nginx.conf /etc/nginx/conf.d/default.conf

    18

    暴露80端口

    19

    EXPOSE 80

    20

    启动nginx(默认启动,可省略)

    21

    CMD ["nginx", "-g", "daemon off;"]

    22

    适用场景:SpringBoot 项目(打 jar 包后,构建镜像部署),分两种场景(简单版+完整版)


    23

    3. Java 工程 Dockerfile 示例(SpringBoot 项目,最常用)

    3.1 简单版(直接使用jar包构建)

    基础镜像:Java 11(轻量版,适合生产)

    1

    FROM openjdk:11-jdk-slim

    2

    工作目录

    3

    WORKDIR /app

    4

    复制本地打包好的SpringBoot jar包到容器内(本地jar包路径需与构建命令目录一致)

    5

    COPY ./target/gs-springboot.jar /app/gs-springboot.jar

    6

    暴露项目端口(SpringBoot默认8080)

    7

    EXPOSE 8080

    8

    启动jar包(指定JVM参数,可选,优化性能)

    9

    CMD ["java", "-jar", "/app/gs-springboot.jar", "-Xms512m", "-Xmx1024m"]

    10


    11

    3.2 完整版(多阶段构建,减小镜像体积,推荐生产使用)

    第一步:构建SpringBoot项目(基于maven镜像,编译打包)

    1

    FROM maven:3.8-openjdk-11 AS build-stage

    2

    WORKDIR /app

    3

    复制maven配置(可选,国内加速)

    4

    COPY ./pom.xml /app/

    5

    COPY ./src /app/src

    6

    打包生成jar包(跳过测试,加快构建速度)

    7

    RUN mvn clean package -DskipTests

    8

    第二步:部署(使用轻量jdk镜像,减小体积)

    9

    FROM openjdk:11-jre-slim

    10

    WORKDIR /app

    11

    复制第一步构建好的jar包(从build-stage镜像复制)

    12

    COPY --from=build-stage /app/target/gs-springboot.jar /app/

    13

    暴露端口

    14

    EXPOSE 8080

    15

    启动命令(添加JVM优化参数)

    16

    CMD ["java", "-jar", "/app/gs-springboot.jar", "-Xms512m", "-Xmx1024m", "-XX:+UseG1GC"]

    17


    18

    4. Dockerfile 构建命令(配合上述示例使用)

    1. 进入Dockerfile所在目录(必做)

    1

    cd 你的Dockerfile目录路径

    2


    3

    2. 构建镜像(指定镜像名和标签,如Vue项目)

    4

    docker build -t gs-vue-nginx:v1 .

    5


    6

    3. 构建Java项目镜像

    7

    docker build -t gs-springboot:v1 .

    8


    9

    4. 查看构建好的镜像

    10

    docker images

    11


    12

    5. 基于镜像启动容器(测试)

    13

    docker run -d -p 8080:8080 --name gs-springboot gs-springboot:v1

    14


    15

    四、Docker Compose 常用命令(可直接复制)

    启动服务(后台运行)

    1

    docker-compose up -d

    2


    3

    停止服务(保留容器和数据)

    4

    docker-compose stop

    5


    6

    停止并删除容器、网络(保留数据卷)

    7

    docker-compose down

    8


    9

    停止并删除所有(含数据卷,慎用)

    10

    docker-compose down -v

    11


    12

    查看单个服务日志

    13

    docker-compose logs -f 服务名(如gs_vue)

    14


    15

    重启单个服务

    16

    docker-compose restart 服务名

    17


    18

    查看所有服务状态

    19

    docker-compose ps

    20


    21

    1. 完整配置模板(可直接复制使用)

    version: '3.8' # 推荐版本,兼容所有主流特性

    1


    2

    services:

    3

    示例1:Vue + Nginx(对应你的gs_vue容器)

    4

    gs_vue:

    5

    image: gs_vue:v1 # 使用的镜像(本地已有)

    6

    container_name: gs_vue # 自定义容器名(便于操作)

    7

    ports:

    8

  • "886:80" # 端口映射:主机886端口 → 容器80端口
  • 9

    restart: always # 重启策略(推荐)

    10

    network_mode: bridge # 网络模式(默认,安全隔离)

    11

    volumes: # 目录挂载(可选,按需开启)

    12

  • ./nginx/html:/usr/share/nginx/html # 本地静态文件 → 容器Nginx目录
  • 13

  • ./nginx/conf.d:/etc/nginx/conf.d # 本地配置 → 容器Nginx配置
  • 14


    15

    示例2:Redis(对应你的gs_redis容器)

    16

    gs_redis:

    17

    image: redis:6-alpine # 使用轻量alpine版本镜像

    18

    container_name: gs_redis # 自定义容器名

    19

    ports:

    20

  • "6380:6380" # 端口映射:主机6380 → 容器6380
  • 21

    restart: always # 重启策略

    22

    network_mode: bridge # 网络模式

    23

    command: redis-server --requirepass 123456 # 启动命令(设置Redis密码)

    24

    volumes:

    25

  • ./redis/data:/data # 持久化:本地目录 → 容器Redis数据目录
  • 26

    2. restart 重启策略(4种可选,详细说明)

    1. 默认值:从不自动重启

    1

    restart: "no" # 容器退出后,无论何种原因,都不自动重启

    2


    3

    2. 最常用:无条件自动重启

    4

    restart: always # 容器正常退出、异常崩溃、Docker重启、电脑开机,均自动启动

    5

    推荐场景:业务服务、Nginx、Redis等需要持续运行的服务

    6


    7

    3. 异常重启:仅崩溃时重启

    8

    restart: on-failure # 只有容器以非0状态码退出(异常崩溃)时,才自动重启

    9

    推荐场景:临时运行的脚本、非核心服务

    10


    11

    4. 安全重启:除非手动停止,否则一直重启

    12

    restart: unless-stopped # 容器退出后自动重启,除非手动执行docker stop停止容器

    13

    推荐场景:MySQL、PostgreSQL等数据库服务(避免误操作导致重启)

    14

    3. network_mode 网络模式(5种常用,详细说明)

    1. 默认模式:桥接网络(最常用)

    1

    network_mode: bridge # 容器间相互隔离,通过端口映射访问主机,安全稳定

    2

    适用场景:绝大多数业务场景,如Nginx、Redis、MySQL等

    3


    4

    2. 主机网络:共享主机网络

    5

    network_mode: host # 容器不占用独立网络,直接使用主机IP和端口,无端口映射

    6

    特点:性能高、无隔离;注意:Windows/macOS不支持,仅Linux系统可用

    7

    适用场景:对网络性能要求高的服务

    8


    9

    3. 无网络:完全隔离

    10

    network_mode: none # 容器无网络连接,仅能在容器内部进程通信

    11

    适用场景:无需网络的本地计算容器

    12


    13

    4. 共享容器网络:复用其他容器网络

    14

    network_mode: container:容器名/ID # 共享指定容器的网络(如共享Nginx容器网络)

    15

    适用场景:Sidecar模式(如日志收集容器、监控容器)

    16


    17

    5. 默认别名:与bridge一致

    18

    network_mode: default # 等同于bridge,可省略不写

    19

    三、Docker Compose 常用命令(可直接复制)

    启动服务(最常用)

    1

    docker-compose up -d # 后台启动所有服务(-d必加,避免占用终端)

    2


    3

    停止服务

    4

    docker-compose stop # 停止所有服务,保留容器和数据(下次可直接启动)

    5


    6

    停止并删除服务

    7

    docker-compose down # 停止所有服务,删除容器和网络(保留数据卷)

    8

    docker-compose down -v # 停止所有服务,删除容器、网络、数据卷(慎用,会丢失数据)

    9


    10

    日志查看

    11

    docker-compose logs -f # 实时跟踪所有服务的日志

    12

    docker-compose logs -f 服务名 # 实时跟踪单个服务的日志(示例:docker-compose logs -f

    gs_vue)

    13


    14

    重启服务

    15

    docker-compose restart # 重启所有服务

    16

    docker-compose restart 服务名 # 重启单个服务(示例:docker-compose restart gs_redis)

    17


    18

    查看服务状态

    19

    docker-compose ps # 查看所有服务的运行状态(类似docker ps)

    20

    四、生产常用模板(直接复制可用)

    模板1:Nginx + Vue(静态网站部署)

    version: '3.8'

    1

    services:

    2

    nginx:

    3

    image: nginx:alpine

    4

    container_name: gs_vue

    5

    ports:

    6

  • "886:80"
  • 7

    restart: always

    8

    network_mode: bridge

    9

    volumes:

    10

  • ./nginx/html:/usr/share/nginx/html
  • 11

  • ./nginx/conf.d:/etc/nginx/conf.d
  • 12


    13

    模板2:Redis(带密码+数据持久化)

    version: '3.8'

    1

    services:

    2

    redis:

    3

    image: redis:6-alpine

    4

    container_name: gs_redis

    5

    ports:

    6

  • "6380:6380"
  • 7

    restart: unless-stopped

    8

    network_mode: bridge

    9

    command: redis-server --requirepass 123456

    10

    volumes:

    11

  • ./redis/data:/data
  • 12


    13

    模板3:MySQL 8.0(带持久化+自动建库)

    version: '3.8'

    1

    services:

    2

    mysql:

    3

    image: mysql:8.0

    4

    container_name: gs_mysql

    5

    ports:

    6

  • "3306:3306"
  • 7

    restart: unless-stopped

    8

    network_mode: bridge

    9

    environment:

    10

    1. 先创建 Dockerfile(与jar包同目录):

    2. 再创建 docker-compose.yml:

    MYSQL_ROOT_PASSWORD: 123456

    11

    MYSQL_DATABASE: gs_db

    12

    volumes:

    13

  • ./mysql/data:/var/lib/mysql
  • 14


    15

    模板4:SpringBoot 项目(Dockerfile+Docker Compose 组合)

    FROM openjdk:11-jre-slim

    1

    WORKDIR /app

    2

    COPY ./target/gs-springboot.jar /app/

    3

    EXPOSE 8080

    4

    CMD ["java", "-jar", "/app/gs-springboot.jar", "-Xms512m", "-Xmx1024m"]

    5


    6

    version: '3.8'

    1

    services:

    2

    springboot:

    3

    build: . # 自动读取当前目录的Dockerfile构建镜像

    4

    container_name: gs_springboot

    5

    ports:

    6

  • "8080:8080"
  • 7

    restart: always

    8

    network_mode: bridge

    9

    volumes:

    10

  • ./target:/app/target # 挂载jar包目录,方便更新
  • 11


    12

    模板1:Nginx + Vue(静态网站部署)

    version: '3.8'

    1

    services:

    2

    nginx:

    3

    image: nginx:alpine

    4

    container_name: gs_vue

    5

    ports:

    6

  • "886:80"
  • 7

    restart: always

    8

    network_mode: bridge

    9

    volumes:

    10

  • ./nginx/html:/usr/share/nginx/html # 本地静态文件目录
  • 11

  • ./nginx/conf.d:/etc/nginx/conf.d # 本地Nginx配置目录
  • 12

    模板2:Redis(带密码+数据持久化)

    version: '3.8'

    1

    services:

    2

    redis:

    3

    image: redis:6-alpine

    4

    container_name: gs_redis

    5

    ports:

    6

  • "6380:6380"
  • 7

    restart: unless-stopped

    8

    network_mode: bridge

    9

    command: redis-server --requirepass 123456 # Redis密码:123456

    10

    volumes:

    11

  • ./redis/data:/data # 数据持久化,避免容器删除丢失数据
  • 12

    模板3:MySQL 8.0(带持久化+环境变量)

    version: '3.8'

    1

    services:

    2

    mysql:

    3

    image: mysql:8.0

    4

    container_name: gs_mysql

    5

    ports:

    6

  • "3306:3306"
  • 7

    restart: unless-stopped

    8

    1. 所有命令均在 Windows PowerShell 或 WSL 终端执行,复制后直接粘贴即可;

    2. Docker Compose 命令需在 docker-compose.yml 文件所在目录执行;

    3. 远程连接 Docker 时,使用命令:docker -H tcp://127.0.0.1:2375 (替换localhost避免解析问题);

    4. 数据卷(volumes)挂载时,本地目录需提前创建,避免权限问题;

    5. 生产环境中,数据库、Redis 优先使用 restart: unless-stopped,避免误操作导致重启。

    6. docker container update 仅能修改运行中容器的部分配置(如重启策略、资源限制),无法修改端口

    映射、挂载目录、镜像版本等核心配置;若需修改核心配置,需停止容器后重新创建,或通过

    Watchtower工具实现镜像与容器的自动更新。

    7. 使用 docker container update 修改资源限制(内存、CPU)时,无需停止容器,配置实时生效;修改

    重启策略后,需重启容器才能生效。

    8. docker search 仅搜索Docker Hub官方仓库镜像,若需搜索私有仓库镜像,需先配置私有仓库地址;

    筛选星级≥1000的镜像,可有效避免劣质、不稳定镜像。

    9. docker build 构建镜像时,当前目录需存在Dockerfile文件(文件名固定为Dockerfile,大小写敏

    感);--no-cache参数会重新下载所有依赖,构建速度较慢,但能确保镜像与最新Dockerfile一致。

    10. docker cp 传输文件时,若容器内路径不存在,会自动创建对应目录;传输目录时,无需加末尾斜

    杠,递归复制整个目录及子文件。

    11. 进入容器后,若缺失vim、curl等常用命令,需根据容器内系统类型安装:

    ① 容器内为 Debian/Ubuntu 系统(基于apt包管理):执行 apt update && apt install -y vim

    curl (先更新软件源,再安装);

    ② 容器内为 Alpine 系统(基于apk包管理):执行 apk add --no-cache vim curl (--no-cache参

    数避免缓存占用空间);

    ③ 安装完成后,可直接在容器内使用vim编辑文件、curl测试网络连接,无需重启容器。

    12. 镜像导入导出相关说明:

    ① docker save 导出的tar包包含镜像完整信息,可跨机器迁移,导入后保留原镜像名和标签;

    ② docker load 导入时,无需指定镜像名,会自动识别tar包内的镜像信息;

    ③ 导出多个镜像时,可在命令后添加多个镜像名:标签,生成一个合并的tar包(示例:docker save -o

    images.tar gs_vue:v1 gs_redis:v1)。

    13. 阿里云镜像仓库推送关键注意事项:

    network_mode: bridge

    9

    environment:

    10

    MYSQL_ROOT_PASSWORD: 123456 # root密码

    11

    MYSQL_DATABASE: gs_db # 自动创建数据库(可选)

    12

    volumes:

    13

  • ./mysql/data:/var/lib/mysql # 数据持久化目录
  • 14

    五、注意事项(关键提醒)

    ① 需先在阿里云「容器镜像服务」创建命名空间和镜像仓库,获取仓库地址(格式:registry.cn-地

    区.aliyuncs.com/命名空间/镜像名);

    ② 镜像标签必须与阿里云仓库地址、命名空间、镜像名完全匹配,否则推送失败;

    ③ 登录阿里云镜像仓库时,输入的密码为阿里云容器镜像服务的「访问凭证」(非阿里云账号登录密

    码);

    ④ 推送完成后,可在阿里云镜像仓库控制台查看镜像,后续可从任意机器拉取使用。

    14. 清理相关命令说明(释放存储空间,关键提醒):

    ① 基础清理命令:

  • docker system prune :默认清理无用容器、网络、悬挂镜像(未打标签的镜像),不删除已打标
  • 签的镜像和数据卷,相对安全;

  • docker system prune -a :清理范围更广,包含所有无用镜像(含未使用的打标签镜像)、容
  • 器、网络,释放空间更多,使用前需确认无有用镜像;

  • docker system prune --volumes :清理无用数据卷,数据卷删除后数据无法恢复,需确认数据卷
  • 内无重要数据(如数据库数据)。

    ② 清理指定前缀镜像:

  • 命令 docker images | grep -E "^gs-|^gs_" | awk '{print $3}' | xargs docker rmi -
  • f 中,gs-|^gs_ 为镜像前缀匹配规则,可替换为自己的镜像前缀(如test-、app_);

  • grep -E 用于匹配多个前缀,awk '{print $3}' 提取镜像ID,xargs docker rmi -f 批量
  • 强制删除匹配的镜像;

  • 建议先执行docker images | grep -E "^gs-|^gs_" 查看匹配的镜像,确认无误后再执行完整删
  • 除命令,避免误删有用镜像。

    ③ 注意:所有清理命令均不可逆,尤其是带 -f (强制)、--volumes (数据卷)的命令,执行前

    务必确认无重要资源,生产环境慎用。


    本文整理自实践经验,如有问题欢迎交流讨论。


    评论