Docker配置
基础知识
- Docker: Docker 是一个开源的应用容器引擎,采用容器化技术,比虚拟机占用更少资源
- Image: 只读的容器模板,包含代码、运行时、库文件、环境变量和配置文件,主要由 Dockerfile 文件定义,也可以从镜像仓库拉取
- Registry: 存储和分发镜像的仓库,用于存储镜像
- Container: 镜像的实例,由 Image 创建,一个镜像可创建多个容器。容器可以被创建、启动、停止、删除、暂停
- Dockerfile: 一个文本文件,包含创建镜像的所有指令
- Compose: 定义和运行多容器的工具
- 命令:
docker run
运行容器docker build
构建镜像docker pull
拉取镜像docker ps
查看容器状态dokcer exec
在运行容器中执行命令docker images
列出本地主机上的镜像docker compose restart
重启某容器xx -d
后台运行容器
- 日志查看:可以使用
docker logs xx
或者 Docker Desktop 查看容器内部日志
安装方法
- Linux:
# 下载并执行Docker官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 启动Docker服务
sudo systemctl start docker
# 下载 Docker Compose 当前稳定版本
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Windows
- 下载Docker Desktop
- 如果卡在 'verifying packages' 则需要切换网络环境
- 选择启用 WSL 2 和 Hyper-V,跳过登录 Docker Hub 账户
- 在图形化界面中查看和管理各容器
docker 传输
- 如果网络不好,可使用另一台以运行的镜像
docker save lrobot-command:latest > command.tar
docker load < xx/command.tar
- 未完全测试此方法
docker 网络配置
拉取不了镜像可用
sudo touch daemon.json
sudo chmod 777 daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]}
systemctl daemon-reload
systemctl restart docker
热更新与docker重启冲突
- 假设更改了 logic.data 中的某函数,使用静态引用的路径无法检测到更改(如 msg.adapter 引用)
- 但 docker 已经检测到热更新并加载了,所以使用
docker compose up --build -d lrobot
会由于文件无变化而不重启容器、不更新 - 此时直接重启容器,不需要重构
docker compose restart lrobot
报错Unknownkey
- 参考方法
wsl -d docker-desktop
cat /etc/wsl.conf
vi /etc/wsl.conf
注释掉crossDistro = true
并退出
wsl --shutdown