跳到主要内容

Docker 安装与使用指南

系统要求
  • 操作系统:Ubuntu 22.04 LTS
  • 服务器推荐配置:2核4G内存
第三方组件说明

以下说明仅供参考,具体配置和使用方法请参考 Docker 官方文档

Docker 是一个开源的应用容器引擎,它让开发者可以将应用及其依赖打包到一个可移植的容器中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上。本指南将教你如何安装 Docker 并介绍一些常用命令。

Docker 安装流程(Ubuntu 系统)

运行以下命令添加 Docker 的官方软件源:

# 更新软件包索引
sudo apt-get update
# 安装必要的软件包
sudo apt-get install ca-certificates curl -y
# 创建密钥目录
sudo install -m 0755 -d /etc/apt/keyrings
# 下载 Docker 的 GPG 密钥
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 设置权限
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新软件包索引
sudo apt-get update

安装 Docker

通过以下命令安装 Docker 和相关组件:

# 安装 Docker 引擎、CLI 和其他组件
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker 基本操作

# 启动 Docker 服务
sudo systemctl start docker

# 停止 Docker 服务
sudo systemctl stop docker

# 重启 Docker 服务
sudo systemctl restart docker

# 查看 Docker 服务状态
sudo systemctl status docker

# 另一种重启方式
sudo service docker restart

# 查看 Docker 详细信息
docker info

问题排查

# 例如查看MySQL容器的日志
docker logs mysql-bytedesk

# 查看Redis容器的日志
docker logs redis-bytedesk

# 查看Elasticsearch容器的日志
docker logs elasticsearch-bytedesk

# 查看Artemis消息队列容器的日志
docker logs artemis-bytedesk

# 查看ollama-bytedesk容器的日志
docker logs ollama-bytedesk

# 查看主应用容器的日志
docker logs bytedesk
# 实时查看日志并跟踪最新输出
docker logs -f bytedesk
# 显示最近50行日志
docker logs --tail 50 bytedesk
# 查看容器内运行的进程
docker top bytedesk

停止和重启服务

# 推荐:使用统一脚本停止/下线
cd bytedesk/deploy/docker
./stop.sh mysql artemis standard stop all
./stop.sh mysql artemis standard down all

# 也可使用分层 compose(MySQL + Artemis + standard + app)
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml down

# 重启特定服务
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml restart bytedesk

# 重启所有服务
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml restart

升级bytedesk镜像

# 1. 停止当前服务
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml down

# 2. 拉取最新镜像
docker pull registry.cn-hangzhou.aliyuncs.com/bytedesk/bytedesk:latest

# 3. 重新启动服务(会自动使用最新镜像)
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml up -d

# 或者使用以下命令强制重新构建并启动
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml up -d --force-recreate bytedesk

删除MySQL数据挂载

如果需要删除MySQL数据挂载并重新初始化数据库,请按以下步骤操作:

# 1. 停止所有服务
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml down

# 2. 删除MySQL数据卷(谨慎操作,会删除所有数据库数据)
docker volume rm bytedesk_mysql_data

# 3. 重新启动服务(会自动创建新的数据卷和数据库)
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml up -d

# 注意:删除数据卷后,所有数据都会丢失,需要重新初始化管理员账户

数据卷管理

# 查看所有数据卷
docker volume ls | grep bytedesk

# 查看数据卷详细信息
docker volume inspect bytedesk_mysql_data
docker volume inspect bytedesk_redis_data
docker volume inspect bytedesk_elasticsearch_data
docker volume inspect bytedesk_upload_data
docker volume inspect bytedesk_ollama_models
docker volume inspect bytedesk_artemis_data

# 备份数据卷(可选)
docker run --rm -v bytedesk_mysql_data:/data -v $(pwd):/backup alpine tar czf /backup/mysql_backup.tar.gz -C /data .

# 恢复数据卷(可选)
docker run --rm -v bytedesk_mysql_data:/data -v $(pwd):/backup alpine tar xzf /backup/mysql_backup.tar.gz -C /data

故障排除

如果遇到数据库连接问题或服务启动失败,可以尝试以下步骤:

# 查看容器状态
docker ps -a

# 查看服务日志
docker logs mysql-bytedesk
docker logs bytedesk

# 如果服务启动失败,可以尝试重启
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml down
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml up -d

# 检查网络连接
docker network inspect bytedesk-network

# 清理未使用的资源
docker system prune -f

常用命令

# 查看服务状态
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml ps

# 查看服务日志
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml logs

# 查看特定服务日志
docker compose -p bytedesk -f compose-base.yaml -f compose-db-mysql.yaml -f compose-mq-artemis.yaml -f compose-scenario-standard.yaml -f compose-app-bytedesk.yaml -f compose-app-mq-artemis.yaml logs bytedesk

# 进入容器内部
docker exec -it bytedesk /bin/bash
docker exec -it mysql-bytedesk mysql -u root -p

# 查看容器资源使用情况
docker stats

源地址参考

由于众所周知的原因,镜像可能下载缓慢或者无法下载,建议更换Docker源地址。

Windows/Mac

可以参考下面的配置

docker_engine_source

Linux

编辑或创建 /etc/docker/daemon.json 文件,使用下面内容替换,然后重启Docker服务。

{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"debug": true,
"experimental": true,
"insecure-registries": [
"121.37.217.138:5000"
],
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.mybacc.com",
"https://dytt.online",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://docker.yomansunter.com",
"https://aicarbon.xyz",
"https://666860.xyz",
"https://docker.zhai.cm",
"https://a.ussh.net",
"https://hub.littlediary.cn",
"https://hub.rat.dev",
"https://docker.m.daocloud.io"
]
}

重启Docker服务

# 重启Docker服务
sudo systemctl restart docker

参考链接

这页文档对您有帮助吗?