Docker 配置
安装
- Linux:
# 下载并执行 Docker 官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh 或 wget 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网络配置
拉取不了镜像可用
- 写入配置文件
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com"
]
}
EOF
sudo chmod 644 /etc/docker/daemon.jsonsystemctl daemon-reloadsystemctl restart docker
docker传输
本地存在网络环境,但服务器没有,上一方案尝试后仍然拉取不了 docker 时可用
- 本地下载 docker(napcat,mihomo,mysql,mongodb 可用)
docker pull mlikiowa/napcat-docker:latestdocker save mlikiowa/napcat-docker:latest -o napcat-docker_latest.tarscp -i xxx\lrobot.pem napcat-docker_latest.tar user@ip:/home/ubuntu/- 切换到服务器命令行
sudo docker load -i /home/ubuntu/napcat-docker_latest.tar- 加载成功后可删除对应 tar
热更新与 docker 重启冲突
- 倘若更新的是 docker 卷内的内容(volumes),docker 会自动同步到容器内
- 但静态引用此内容的地方无法更新(如静态引用 logic.data,config 等等)
- 此时使用
docker compose up --build -d lrobot,由于文件内容无变化(更新已经同步到 docker 内部了)导致重启不重启,静态引用不更新 - 此时直接
docker compose restart lrobot重启容器即可
报错:Unknownkey
- docker desktop 加载失败,报错
- 参考方法
wsl -d docker-desktop
cat /etc/wsl.conf
vi /etc/wsl.conf
- 注释掉
crossDistro = true并退出 wsl --shutdown
报错:端口占用
- 发现启动时 docker 的自用端口被随机占用,使用以下代码解决
netsh interface ipv4 show excludedportrange protocol=tcp显示 5921-5925 在其中netsh int ipv4 set dynamic tcp start=49152 num=16384netsh int ipv6 set dynamic tcp start=49152 num=16384- 重启电脑
相关知识
image:安装包;container:进程;registry:软件商店
- Docker: Docker 是一个开源的应用容器引擎,采用容器化技术,比虚拟机占用更少资源
- Image: 只读的容器模板,包含代码、运行时、库文件、环境变量和配置文件,主要由 Dockerfile 文件定义,也可以从镜像仓库拉取
- Registry: 存储和分发镜像的仓库,用于存储镜像
- Container: 镜像的实例,由 Image 创建,一个镜像可创建多个容器。容器可以被创建、启动、停止、删除、暂停
- Dockerfile: 一个文本文件,包含创建镜像的所有指令
- Compose: 定义和运行多容器的工具
常用命令
repo:用户;tag:仓库名;app:容器名
镜像
docker images本地镜像列表docker pull repo:tag拉取镜像docker save repo:tag -o xx.tar导出离线包docker load -i xx.tar导入离线包
容器
docker ps -a查看所有容器docker start/stop/restart app启停容器docker rm -f app强制删除docker exec -it app bash进容器排障docker stats实时资源占用docker logs app查看日志docker logs --tail 50 app查看最后 50 条xx + -d后台启动
多容器
docker compose up --build构建镜像并启动容器- 其他指令比单容器多一个 compose,使用的是服务名而不是容器名
- 本项目中,服务名=指定的容器名,所以不用 compose 也可以
清理
docker system prune -a --volumes清理全部未用镜像/容器/网络/卷(谨慎使用)