Docker容器技术与离线部署实战培训教程
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(客户端-服务端)架构:
- Docker客户端(Client):用户日常操作的入口,通过执行
docker命令向服务端发送指令。 - Docker守护进程(Daemon):运行在宿主机后台的核心服务,负责管理镜像、容器、网络、存储等所有资源,执行客户端发来的指令。
- 镜像仓库(Registry):第三方镜像存储服务,负责镜像的拉取与推送。
1.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.tgzdocker.servicedocker-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.tar、nginx.tar、redis.tarmysqlg8.tar、zookeeper.tar、vsftp.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
逐行解释
-
核心有效命令
docker-compose up -d- 作用:读取当前目录下的
docker-compose.yml,按配置创建并启动所有服务容器。 -d:后台守护模式运行,不占用当前终端窗口。
- 作用:读取当前目录下的
-
已注释的历史方案(共3行)
# sleep 20s:原设计为等待vsftpd容器启动完成后再执行后续操作# docker cp ...:原方案是容器启动后,手动把宿主机的vsftpd配置文件复制到容器内部# docker restart vsftpd:复制配置后重启容器让配置生效
为什么被注释?
当前docker-compose.yml中已经通过volumes数据卷的方式,直接把宿主机的配置文件挂载到容器内,容器启动时自动读取宿主机配置,无需再手动复制+重启。挂载方式更易维护,修改配置后重启容器即可生效,因此旧方案被弃用。
执行后验证
# 查看所有服务的运行状态,正常应为全部Up状态
docker-compose ps
# 查看实时启动日志,排查是否有报错
docker-compose logs -f
4.6 标准部署操作步骤(实操指引)
- 将完整部署包上传到目标服务器,进入部署包根目录
cd /你的部署包路径 - 给三个脚本添加执行权限(首次执行需要)
chmod +x run.sh install.sh build.sh - 第一步:执行环境安装脚本
./run.sh - 第二步:执行镜像加载脚本
./install.sh - 第三步:核对编排配置,确认端口、挂载路径符合现场环境
- 第四步:执行服务启动脚本
./build.sh - 验证所有服务状态正常,部署完成。
第五部分 日常运维与故障排查
5.1 日常运维常用操作
- 查看整套服务状态:
docker-compose ps - 查看单个服务日志:
docker logs -f 容器名 - 重启单个服务:
docker-compose restart 服务名 - 进入容器内部调试:
docker exec -it 容器名 /bin/bash - 停止整套服务:
docker-compose stop - 配置修改生效:修改宿主机挂载的配置文件,重启对应服务即可
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 运维安全规范
- Redis、FTP、MySQL等服务必须设置强密码,定期更换。
- 配置文件、证书文件建议设置只读权限,防止误改或篡改。
- 对外端口按需开放,通过防火墙限制访问IP范围。
- 重要业务数据、配置文件定期备份宿主机挂载目录。
- 禁止在生产环境随意进入容器修改文件,所有配置变更通过宿主机挂载文件完成。
附录 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 # 销毁所有容器
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)