Docker容器技术与离线部署实战培训教程

第一部分 Docker基础理论

1.1 什么是Docker

Docker是一款开源的容器化引擎,能够将应用程序及其依赖的运行环境、配置文件、依赖库打包成一个轻量级、可移植的容器镜像,随后可以发布到任意安装了Docker的Linux服务器上运行。

容器技术的核心解决了开发、测试、生产环境不一致的行业痛点,彻底避免了“本地可以正常运行,上线就报错”的环境差异问题。

1.2 容器与虚拟机的区别

传统虚拟机通过硬件虚拟化技术,模拟完整的计算机硬件并运行独立的操作系统;而Docker容器直接共享宿主机的操作系统内核,仅封装应用层面的依赖。

对比维度 Docker容器 传统虚拟机
操作系统 共享宿主机内核,无独立系统 包含完整独立的操作系统
资源占用 极小,单容器MB级别 极大,单虚拟机GB级别
启动速度 秒级启动 分钟级启动
性能损耗 几乎无原生损耗 较高的硬件虚拟化损耗
隔离级别 进程级资源隔离 系统级完全隔离

1.3 Docker三大核心组件

Docker的核心逻辑围绕「镜像、容器、仓库」三个要素展开,三者是Docker最基础的概念。

1.3.1 镜像(Image)

镜像是一个只读的应用模板,包含了运行一个程序所需的全部内容:程序代码、运行环境、依赖库、配置文件、环境变量等。

  • 镜像本身不运行,相当于“软件安装包”或者“系统模板”。
  • 镜像可以基于基础镜像分层构建,支持版本管理。
1.3.2 容器(Container)

容器是镜像运行之后的实例,是一个独立运行的进程,拥有专属的文件系统、网络空间、进程空间。

  • 镜像是静态的模板,容器是动态的运行实例,相当于“正在运行的软件”。
  • 同一个镜像可以创建多个相互独立的容器。
  • 容器默认数据不持久化,删除容器后内部数据会丢失,需通过数据卷挂载实现持久化。
1.3.3 仓库(Registry)

仓库是集中存储、分发镜像的服务,是镜像的“云端仓库”。

  • 公共仓库:如Docker Hub,提供大量官方镜像供公开使用。
  • 私有仓库:企业内部搭建的镜像仓库,用于存放定制化的业务镜像,保障数据安全。
三者的联系

仓库用于存储和分发镜像;从仓库拉取镜像到本地后,可以通过镜像创建并启动容器;运行中的容器也可以通过提交操作生成新的镜像,再推送至仓库保存。

1.4 Docker整体架构

Docker采用C/S(客户端-服务端)架构:

  1. Docker客户端(Client):用户日常操作的入口,通过执行docker命令向服务端发送指令。
  2. Docker守护进程(Daemon):运行在宿主机后台的核心服务,负责管理镜像、容器、网络、存储等所有资源,执行客户端发来的指令。
  3. 镜像仓库(Registry):第三方镜像存储服务,负责镜像的拉取与推送。

1.5 核心价值与应用场景

  1. 环境一致性:开发、测试、生产环境统一,消除环境差异导致的问题。
  2. 快速部署交付:镜像一键启动,告别繁琐的环境搭建,大幅缩短部署时间。
  3. 资源高效利用:单台服务器可运行数十上百个容器,服务器资源利用率显著提升。
  4. 弹性扩缩容:容器秒级启动,非常适合应对业务波峰波谷的弹性伸缩。
  5. 应用隔离:不同业务、不同版本的应用运行在独立容器中,互不干扰。

典型应用场景:微服务架构部署、中间件快速搭建、持续集成与持续部署、离线环境业务交付等。


第二部分 Docker基础命令实操

2.1 Docker环境管理命令

用于检查Docker运行状态、管理Docker服务本身。

# 查看Docker版本信息
docker --version

# 查看Docker详细信息(镜像、容器数量、存储驱动等)
docker info

# 启动Docker服务
systemctl start docker

# 停止Docker服务
systemctl stop docker

# 重启Docker服务
systemctl restart docker

# 设置Docker开机自启
systemctl enable docker

2.2 镜像管理命令

镜像管理是Docker最基础的操作,核心围绕查看、拉取、删除、导入导出展开。

# 查看本地所有镜像
docker images
# 输出字段说明:REPOSITORY(镜像名)、TAG(版本标签)、IMAGE ID(镜像ID)、SIZE(大小)

# 从镜像仓库拉取镜像
docker pull 镜像名:标签
# 示例:docker pull redis:6

# 删除本地镜像
docker rmi 镜像ID/镜像名:标签
# 强制删除(镜像被容器占用时使用)
docker rmi -f 镜像ID

# 导出镜像为本地tar包(离线部署核心操作)
docker save -o 导出文件名.tar 镜像名:标签
# 示例:docker save -o redis.tar redis:v2

# 从本地tar包导入镜像(离线部署核心操作)
docker load -i 镜像包.tar
# 示例:docker load -i redis.tar

2.3 容器生命周期管理命令

容器生命周期管理覆盖创建、启动、停止、删除全流程。

# 查看正在运行的容器
docker ps
# 查看所有容器(包含已停止的)
docker ps -a
# 输出关键字段:CONTAINER ID(容器ID)、NAMES(容器名)、STATUS(状态)、PORTS(端口映射)

# 创建并启动容器
# 常用参数说明:
# -d          后台守护模式运行
# --name      自定义容器名称
# -p 宿主机端口:容器端口  端口映射
# -v 宿主机目录:容器目录  数据卷挂载
# --restart always  容器退出自动重启
docker run [参数] 镜像名:标签
# 示例:docker run -d --name redis --restart always -p 6379:6379 redis:v2

# 启动已停止的容器
docker start 容器ID/容器名

# 停止运行中的容器
docker stop 容器ID/容器名

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

# 删除容器(需先停止容器)
docker rm 容器ID/容器名
# 强制删除运行中的容器(谨慎使用)
docker rm -f 容器ID/容器名

2.4 容器运维与排障命令

日常运维排查问题的核心命令,是故障处理的基础。

# 进入容器内部(用于调试、查看配置、修改文件)
docker exec -it 容器ID/容器名 /bin/bash
# 退出容器终端:输入 exit 回车

# 查看容器日志(排障第一命令)
docker logs 容器名/容器ID

# 实时滚动查看日志
docker logs -f 容器名/容器ID

# 查看最后N行日志
docker logs --tail 100 容器名/容器ID

# 查看容器资源占用(CPU、内存、IO)
docker stats

2.5 数据卷与网络基础

2.5.1 数据卷(Volume)

数据卷是将宿主机的目录/文件与容器内的目录进行绑定的技术,是实现数据持久化的核心方式。

  • 容器删除后,宿主机上挂载的目录数据不会丢失。
  • 修改宿主机上的配置文件,重启容器即可生效,无需进入容器操作。
  • 挂载权限分为两种:
    • :ro(read-only,只读):容器只能读取,无法修改,适用于配置文件、证书。
    • :rw(read-write,读写,默认):容器可读取和写入,适用于日志、业务数据目录。
2.5.2 主机网络模式(host)

Docker默认使用桥接网络,容器拥有独立的IP和端口;而host模式下,容器直接共享宿主机的网络栈。

  • 优点:无需端口映射,网络性能接近原生,延迟低。
  • 缺点:端口直接占用宿主机端口,容易冲突;网络隔离性弱。
  • 适用场景:Nginx、FTP等对网络性能要求高的服务。
  • 注意:仅Linux系统原生支持,Windows、Mac桌面版Docker无法正常使用。

第三部分 docker-compose编排与配置详解

3.1 docker-compose概述

docker-compose是Docker官方的多容器编排工具,通过一个docker-compose.yml配置文件,即可批量定义、启动、管理一组相互关联的容器服务。

核心解决的问题:

  • 管理多组件的依赖启动顺序
  • 一条命令完成整套服务的启停、重启
  • 统一管理所有服务的端口、挂载、环境变量、重启策略

3.2 docker-compose常用命令

注意:所有命令必须在docker-compose.yml文件所在的目录下执行。

# 后台启动所有服务(生产环境标准用法)
docker-compose up -d

# 查看当前编排下所有容器的运行状态
docker-compose ps

# 停止所有服务(不删除容器)
docker-compose stop

# 启动已停止的所有服务
docker-compose start

# 重启所有服务
docker-compose restart

# 单独重启某一个服务
docker-compose restart 服务名
# 示例:docker-compose restart nginx

# 查看所有服务的实时日志
docker-compose logs -f

# 停止并删除所有容器(保留镜像和数据卷)
docker-compose down

3.3 配置文件通用字段说明

docker-compose.yml采用YAML语法,以下是所有服务通用的核心配置字段:

配置字段 作用说明
version 指定Compose语法版本,本项目使用版本3
services 所有容器服务的总入口,所有服务均定义在该节点下
image 指定容器使用的镜像,支持「镜像名:标签」或「镜像ID」
restart: always 容器异常退出自动重启,生产环境必配
container_name 自定义容器名称,方便运维识别和操作
ports 端口映射,格式:宿主机端口:容器端口
volumes 数据卷挂载,支持:ro只读、:rw读写权限
environment 注入环境变量,配置应用运行参数
command 覆盖镜像默认启动命令,自定义启动参数
depends_on 定义服务启动依赖,控制容器启动顺序
network_mode: host 启用主机网络模式,容器共享宿主机网络栈

3.4 业务配置文件逐服务详解

本项目docker-compose.yml共定义6个服务(含1个备用注释服务),覆盖全栈中间件组件。

3.4.1 全局头部配置
version: '3'
services:
  • version: '3':采用Compose v3版本语法,适配主流Docker版本
  • services:所有业务容器服务的总入口
3.4.2 Zookeeper服务(分布式协调组件)
  zookeeper:
    image: zookeeper:v1
    restart: always
    ports:
      - "2181:2181"
  • 服务名:zookeeper,容器内部网络可通过该名称互相访问
  • 镜像:使用本地定制镜像 zookeeper:v1
  • 重启策略:always,服务异常自动拉起
  • 端口:宿主机2181映射容器2181,为Zookeeper标准通信端口
  • 业务作用:为Kafka提供集群元数据管理、节点状态协调,是Kafka运行的依赖基础
3.4.3 Kafka服务(分布式消息队列)
  kafka:
    image: kafka:v1
    restart: always
    depends_on: [ zookeeper ]
    ports:
      - "9292:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: Linx
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.100:9292
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_PORT: 9292
  • 启动依赖:depends_on: [ zookeeper ],确保先启动Zookeeper,再启动Kafka
  • 端口:宿主机9292映射容器默认9092端口
  • 核心环境变量:
    • KAFKA_ZOOKEEPER_CONNECT:绑定Zookeeper服务地址,通过服务名内部DNS解析
    • KAFKA_ADVERTISED_LISTENERS:对外暴露的访问地址,业务系统通过该IP和端口收发消息
  • 业务作用:实现业务模块解耦、异步通信、日志流处理,是系统的消息总线
3.4.4 Redis服务(内存缓存数据库)
  redis:
      image: redis:v2
      restart: always
      container_name: redis
      command: redis-server --requirepass 1Qaz@2wsx  --notify-keyspace-events Ex
      ports:
        - "6179:6379"
  • 容器名:固定为redis,运维操作更直观
  • 自定义启动命令:
    • --requirepass 1Qaz@2wsx:设置访问密码,安全加固,无密码无法连接
    • --notify-keyspace-events Ex:开启键过期事件通知,可监听缓存失效触发业务逻辑
  • 端口:宿主机6179映射容器默认6379端口
  • 业务作用:热点数据缓存、会话存储、分布式锁、定时过期任务触发
3.4.5 Nginx服务(反向代理与静态资源服务)
  nginx:
    restart: always
    image: nginx:v2
    ports:
        - 8083:8083
        - 18448:18448
    volumes:
      - ./plugs/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./plugs/nginx/html/web/:/html/web/
      - ./plugs/nginx/html/instruction/:/html/instruction/
      - ./plugs/nginx/html/threeD/:/html/threeD/
      - ./plugs/nginx/html/dist/:/html/dist/
      - ./plugs/nginx/logs:/var/log/nginx
      - ./plugs/nginx/ssl/:/etc/nginx/ssl/
    network_mode: "host"
  • 端口:对外提供8083、18448两个服务端口
  • 数据卷挂载(核心):
    • 挂载nginx.conf:宿主机直接修改配置,重启服务即可生效,无需进入容器
    • 挂载多组静态资源目录:托管前端页面、说明文档、3D可视化页面、打包产物
    • 挂载日志目录:日志落地宿主机,方便排查问题与日志归档
    • 挂载SSL证书目录:支持HTTPS加密访问
  • 网络模式:host主机网络,共享宿主机网卡,大幅提升转发性能
  • 业务作用:前端页面托管、后端接口反向代理、HTTPS加密、访问负载均衡
3.4.6 Vsftp服务(FTP文件传输服务)
  vsftp:
   image: "007276d7208b"
   ports:
    - "10012:10012"
    - "21100-21200:21100-21200"
   restart: always
   container_name: vsftpd
   volumes:
    - ./plugs/vsftpd/etc/vsftpd.pem:/etc/vsftpd/vsftpd.pem:ro
    - ./plugs/vsftpd/etc/vsftpd.conf:/etc/vsftpd/vsftpd.conf:ro
    - /home/patrol/jar/:/home/vsftpd/:rw
    - ./plugs/vsftpd/log/:/var/log/:rw
   environment:
    - FTP_USER=Yzzx220
    - FTP_PASS=Yzzx@220901
    - FILE_OPEN_MODE=0777
    - PASSIVE_PORTS=21100-21200
    - LOCAL_UMASK=000
   network_mode: host
  • 镜像:使用镜像ID启动,为本地定制的vsftpd镜像
  • 端口:10012为FTP控制端口,21100-21200为被动模式数据传输端口段
  • 挂载权限设计:
    • :ro只读:证书、配置文件,防止容器内误操作篡改
    • :rw读写:业务数据目录、日志目录,支持文件上传下载
  • 环境变量:内置FTP登录账号密码、文件权限、被动端口范围
  • 网络模式:host主机网络,保障大文件传输稳定性
  • 业务作用:业务程序包、附件、巡检文件的上传与下载传输
3.4.7 MySQL服务(备用,已注释)
#  mysqlg:
#    image: "mysql:8"
#    ports:
#      - "3307:3306"
#    restart: always
#    environment:
#      - "MYSQL_ROOT_PASSWORD=1Qaz@2wsx"
#      - "MYSQL_DATABASE=mydb"
#    command:
#      --default-authentication-plugin=mysql_native_password
#      --character-set-server=utf8mb4
#      --collation-server=utf8mb4_general_ci
#      --explicit_defaults_for_timestamp=true
#      --lower_case_table_names=1
#      --max_allowed_packet=128M;
#      --default-time-zone=+8:00
#      --max_connections=3000
  • 状态:整段注释,暂未启用,删除注释即可快速部署
  • 配置:MySQL 8.0版本,内置root密码、默认数据库、字符集、时区、连接数等生产级优化参数
  • 业务作用:关系型数据持久化存储,业务需要时可快速启用

第四部分 离线部署全流程实战

4.1 部署流程总览

本套部署方案为纯离线自动化部署,专为无外网的内网服务器环境设计,通过3个脚本按固定顺序执行,配合核心编排配置文件,即可完成从基础环境搭建到业务服务上线的全流程。

执行顺序 步骤名称 核心动作 执行目标
第一步 执行 run.sh 安装Docker引擎 + docker-compose工具 搭建容器运行的基础环境
第二步 执行 install.sh 批量导入所有业务镜像到本地Docker 让Docker识别并可运行所有中间件镜像
第三步 执行 build.sh 基于编排文件一键启动所有容器 拉起整套业务中间件服务,完成部署上线

核心原则:环境 → 镜像 → 服务,顺序不可颠倒。必须先有运行环境,再加载镜像,最后启动服务。

4.2 部署包核心文件清单

所有脚本与依赖文件统一放在部署包根目录,各文件对应关系如下:

文件/目录 归属步骤 作用说明
docker-20.10.9.tgz 第一步 run.sh Docker官方二进制安装包(离线版)
docker.service 第一步 run.sh Docker系统服务配置文件,用于设置开机自启
docker-compose-Linux-x86_64 第一步 run.sh docker-compose编排工具的二进制程序
images/ 目录 第二步 install.sh 存放所有业务镜像的tar包(共6个)
docker-compose.yml 第三步 build.sh 多容器编排核心配置文件,定义所有服务运行参数
plugs/ 目录 第三步 build.sh 存放各服务的配置文件、静态资源、证书等,通过数据卷挂载

4.3 第一步:执行 run.sh —— 安装Docker运行环境

执行目的

在空白Linux服务器上,离线安装Docker引擎和docker-compose编排工具,配置开机自启并启动服务,完成容器运行的基础环境搭建。

依赖文件
  • docker-20.10.9.tgz
  • docker.service
  • docker-compose-Linux-x86_64
脚本完整内容
#!/bin/bash
tar -xvf docker-20.10.9.tgz
cp docker/* /usr/bin/
cp docker.service /etc/systemd/system/
systemctl enable docker.service
systemctl start docker
cp docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
cd /usr/local/bin/
chmod +x docker-compose
逐行解释
行号 命令 详细说明
1 #!/bin/bash 脚本声明,指定使用Bash解释器执行该脚本
2 tar -xvf docker-20.10.9.tgz 解压Docker二进制压缩包,解压后生成docker/目录,内含dockerd、docker客户端等所有核心程序
3 cp docker/* /usr/bin/ 将解压后的Docker程序复制到系统/usr/bin/目录,实现全局可调用docker命令
4 cp docker.service /etc/systemd/system/ 将Docker服务配置文件复制到系统服务目录,让系统可以用systemctl管理Docker
5 systemctl enable docker.service 设置Docker服务开机自启,服务器重启后Docker自动运行
6 systemctl start docker 立即启动Docker守护进程,Docker服务正式可用
7 cp docker-compose-Linux-x86_64 /usr/local/bin/docker-compose 将docker-compose二进制文件复制到系统可执行目录,并重命名为docker-compose,实现全局调用
8 cd /usr/local/bin/ 切换到docker-compose所在目录,为设置权限做准备
9 chmod +x docker-compose 给docker-compose文件添加可执行权限,否则无法运行该命令
执行后验证
# 验证Docker安装成功
docker --version
# 验证docker-compose安装成功
docker-compose --version

4.4 第二步:执行 install.sh —— 批量加载业务镜像

执行目的

将提前打包好的所有业务中间件镜像,批量导入到本地Docker引擎中。只有镜像被导入后,Docker才能基于它创建并启动容器。

依赖文件

./images/ 目录下的6个镜像包:

  • kafka.tarnginx.tarredis.tar
  • mysqlg8.tarzookeeper.tarvsftp.tar
脚本完整内容
#!/bin/bash
docker load -i ./images/kafka.tar
docker load -i ./images/nginx.tar
docker load -i ./images/redis.tar
docker load -i ./images/mysqlg8.tar
docker load -i ./images/zookeeper.tar
docker load -i ./images/vsftp.tar
逐行解释
命令格式 详细说明
#!/bin/bash Bash脚本声明
docker load -i ./images/xxx.tar 离线镜像导入命令
- docker load:从本地文件加载镜像
- -i:指定输入文件路径
- 依次导入6个业务镜像,与后续编排文件中的镜像一一对应

补充说明:这些.tar镜像包,是在有外网的环境中通过docker save命令导出的,专门用于离线环境分发。

执行后验证
# 查看本地所有镜像,确认6个镜像都已存在
docker images

4.5 第三步:执行 build.sh —— 启动整套业务服务

执行目的

读取同目录下的docker-compose.yml编排配置,一键启动所有中间件容器,完成整套业务服务的上线运行。

依赖文件
  • docker-compose.yml:核心编排配置,定义所有服务的运行参数
  • plugs/ 目录:各服务的配置文件、静态资源、日志目录(通过数据卷挂载到容器内)
脚本完整内容
#!/bin/bash
docker-compose up -d

# sleep 20s
# docker cp /home/test/docker-xj/plugs/vsftpd/etc/vsftpd.conf vsftpd:/etc/vsftpd/
# docker restart vsftpd
逐行解释
  1. 核心有效命令

    docker-compose up -d
    
    • 作用:读取当前目录下的docker-compose.yml,按配置创建并启动所有服务容器。
    • -d:后台守护模式运行,不占用当前终端窗口。
  2. 已注释的历史方案(共3行)

    • # sleep 20s:原设计为等待vsftpd容器启动完成后再执行后续操作
    • # docker cp ...:原方案是容器启动后,手动把宿主机的vsftpd配置文件复制到容器内部
    • # docker restart vsftpd:复制配置后重启容器让配置生效

    为什么被注释?
    当前docker-compose.yml中已经通过volumes数据卷的方式,直接把宿主机的配置文件挂载到容器内,容器启动时自动读取宿主机配置,无需再手动复制+重启。挂载方式更易维护,修改配置后重启容器即可生效,因此旧方案被弃用。

执行后验证
# 查看所有服务的运行状态,正常应为全部Up状态
docker-compose ps

# 查看实时启动日志,排查是否有报错
docker-compose logs -f

4.6 标准部署操作步骤(实操指引)

  1. 将完整部署包上传到目标服务器,进入部署包根目录
    cd /你的部署包路径
    
  2. 给三个脚本添加执行权限(首次执行需要)
    chmod +x run.sh install.sh build.sh
    
  3. 第一步:执行环境安装脚本
    ./run.sh
    
  4. 第二步:执行镜像加载脚本
    ./install.sh
    
  5. 第三步:核对编排配置,确认端口、挂载路径符合现场环境
  6. 第四步:执行服务启动脚本
    ./build.sh
    
  7. 验证所有服务状态正常,部署完成。

第五部分 日常运维与故障排查

5.1 日常运维常用操作

  1. 查看整套服务状态:docker-compose ps
  2. 查看单个服务日志:docker logs -f 容器名
  3. 重启单个服务:docker-compose restart 服务名
  4. 进入容器内部调试:docker exec -it 容器名 /bin/bash
  5. 停止整套服务:docker-compose stop
  6. 配置修改生效:修改宿主机挂载的配置文件,重启对应服务即可

5.2 常见故障与解决方案

故障现象 可能原因 解决方法
启动报错port is already allocated 宿主机端口被其他程序占用 1. 用`netstat -tulpn
容器启动后立即退出 配置错误、启动命令执行失败 执行docker logs 容器名查看具体报错信息,针对性修复
提示no such image 镜像未导入或镜像名/标签不匹配 执行docker images确认镜像列表,重新加载对应镜像
Kafka频繁重启、连不上ZK Zookeeper未完全就绪 先确认ZK状态正常,手动重启Kafka服务
容器内文件权限不足 宿主机挂载目录权限不够 给宿主机对应目录添加读写权限:chmod -R 755 目录路径
host网络模式不生效 非Linux系统 network_mode: host仅支持Linux,Windows/Mac环境需改用端口映射

5.3 运维安全规范

  1. Redis、FTP、MySQL等服务必须设置强密码,定期更换。
  2. 配置文件、证书文件建议设置只读权限,防止误改或篡改。
  3. 对外端口按需开放,通过防火墙限制访问IP范围。
  4. 重要业务数据、配置文件定期备份宿主机挂载目录。
  5. 禁止在生产环境随意进入容器修改文件,所有配置变更通过宿主机挂载文件完成。

附录 Docker常用命令速查表

附录A Docker基础命令速查

环境管理
docker --version                # 查看Docker版本
docker info                     # 查看Docker详细信息
systemctl start docker          # 启动Docker服务
systemctl enable docker         # 设置开机自启
systemctl restart docker        # 重启Docker服务
镜像管理
docker images                   # 查看本地所有镜像
docker pull 镜像名:标签         # 拉取镜像
docker rmi 镜像ID               # 删除镜像
docker save -o xxx.tar 镜像名   # 导出镜像为tar包
docker load -i xxx.tar          # 导入tar包镜像
容器管理
docker ps                       # 查看运行中的容器
docker ps -a                    # 查看所有容器
docker run -d --name-p 端口 -v 目录 镜像 # 创建并启动容器
docker start/stop/restart 容器名 # 启停重启容器
docker rm 容器名                # 删除容器
docker exec -it 容器名 /bin/bash # 进入容器
docker logs -f 容器名           # 实时查看日志
docker stats                    # 查看容器资源占用

附录B docker-compose命令速查

docker-compose up -d            # 后台启动所有服务
docker-compose ps               # 查看服务状态
docker-compose logs -f          # 查看所有服务日志
docker-compose start/stop       # 启停所有服务
docker-compose restart 服务名   # 重启单个服务
docker-compose down             # 销毁所有容器
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐