一、问题

1、trae work的项目需要用Docker 启动MySQL、Redis、Neo4j服务,终端沙盒,在包含 docker-compose.yml 的项目根目录执行,执行命令:

PowerShell:

docker compose up -d mysql redis neo4j

启动失败,报错:

error during connect: This error may indicate that the docker daemon is not running.: Get "http://

%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/mysql:8.0/json": open //./pipe/docker_engine: The syst

em cannot find the file specified

2、问题1解决后,继续执行运行3个组件服务的命令后,报错:

=> ERROR [internal] load metadata for docker.io/library/mysql:8.0 42.3s

------

> [internal] load metadata for docker.io/library/mysql:8.0:

------

The new 'docker compose' command is currently experimental. To provide feedback or request new fea

tures please open issues at https://github.com/docker/compose-cli

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: fai

led to create LLB definition: failed to do request: Head https://registry.docker-cn.com/v2/library

/mysql/manifests/8.0?ns=docker.io: dial tcp XXXXX: connect: connection refused

二、原因

1、Docker 服务没有启动。本机的 Docker Desktop / Docker Engine 后台服务没运行。本机的Docker Desktop未更新,还是好几年前安装的Docker Desktop。

2、Docker Desktop配置里的镜像不对,连接不上。

三、解决

1、Windows 开始菜单里搜索打开服务Docker Desktop

重新执行命令:

PowerShell:

docker compose up -d mysql redis neo4j

仍报一样的错误,继续排查,执行命令:

PowerShell:

docker info

还是报一样的错误,查看Docker Desktop,提示要更新,就更新了一下,问题1解决。前面启动了Docker Desktop服务,就没看Docker Desktop界面了。

2、换镜像配置

打开 Docker Desktop,Settings -> Docker Engine处

只需将registry-mirrors 这部分的配置更换为:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live",
    "https://docker.1ms.run"
  ]
}

改完点击:

Apply & Restart

等 Docker Desktop 重启完成。

Docker 重启后执行:

docker info

可以查看Docker 是否正常

重新执行拉这3个服务的命令后显示:

96d30d9fbee8: Pull complete

Digest: sha256:7dcddc01f13bab2f15cde676d44d01f61fc9f99fe7785e86196dfc07d358ae2b

Status: Downloaded newer image for mysql:8.0

docker.io/library/mysql:8.0

说明mysql等已经拉成功了

继续执行命令查看容器状态:

docker compose ps

确认端口

docker ps

到此mysql redis neo4j 都用docker启动完成。

四、总结回顾

1、Docker、Docker Compose区别:

        一句话区分,Docker:单个容器的运行引擎,用来启动一个容器。 Docker Compose:Docker 的多容器编排工具,一次性启动一整套项目所有服务。

项目 Docker Docker Compose
定位 容器运行引擎 多容器编排工具
管理范围 单个容器 多个相互依赖的容器集群
配置方式 命令行逐条执行 yml 配置文件统一定义
适用场景 临时启动单个服务 整套项目环境一键拉起
依赖关系 无法定义服务先后启动顺序 可以配置依赖(先启动数据库,再启动后端)

Docker Compose(多服务批量管理):

用一个 docker-compose.yml 配置文件,把 MySQL、Redis、后端 API、前端全部写进去。

# 一键启动所有服务

docker-compose up -d

# 一键停止全部服务

docker-compose down

比如:本实践中,指定启动多个服务命令:docker compose up -d mysql redis neo4j

2、命令:docker info

查看详细运行环境信息,比如:用于查看 Docker 服务端运行信息,包括容器、镜像数量,存储驱动,网络插件,确认容器运行环境是否正常,排查存储与权限问题

3、命令:docker ps与docker compose ps

(1) docker ps
作用:查看本机所有正在运行的容器,不受项目限制。
范围:列出宿主机上全部容器,包括手动 run 启动的容器、其他项目的容器。
缺点:容器多了分不清哪个服务属于哪个项目。
常用命令:

docker ps

# 运行中的容器

docker ps -a

# 所有容器(包含已停止)

比如,本次实践中用来查看服务端口

(2) docker compose ps
作用:只查看当前目录下这个 compose 项目启动的容器。
范围:仅识别当前目录 docker-compose.yml 所创建的服务容器,自动过滤其他无关容器。
优势:会直接显示 yml 里定义的服务名,方便区分 api、mysql、redis。
常用命令:

docker compose ps

# 查看本项目所有容器状态

docker compose ps --services

# 只打印服务名称

命令 查看范围 识别依据 适用场景
docker ps 宿主机全部容器 遍历所有容器 全局排查所有容器
docker compose ps 当前 compose 项目内容器 当前目录 yml 配置 只查看当前项目服务

PS:好了,遇到哪里就了解到哪里,常用就会了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐