参考:https://blog.csdn.net/weixin_51311218/article/details/131376823
https://github.com/docker/compose/issues/8142
1)下载:原来1.18;升级到1.29.2版本
添加链接描述
2)下载后文件后更名为docker-compose;然后放到/usr/bin/文件下覆盖,有的是会放到/usr/local/bin/,本机是放在/usr/bin/下
3)然后sudo chmod +x /usr/bin/docker-compose,然后查看 docker-compose version
安装:pip install pyyaml
字典:
data = {
"version": "3.8",
"services": {
"my_gpu_service": {
"image": "cv-worker:v1",
"command": "/bin/bash -c 'yolo task=detect mode=train model=/data/yolov8m.pt data=/data/data2.yaml epochs=20 device=1 > /data/yolo1.log 2>&1'",
"volumes": [
"/mnt/data/loong/detection/safety/:/data",
],
"working_dir": "/data",
"shm_size": "15g",
"ports": [
"6006:6006",
],
}
}
}
字典转yaml:
import yaml
# 保存YAML文件
with open("detect1.yaml", "w") as f:
yaml.dump(data, f, default_flow_style=False, sort_keys=False)
yaml转字典
import yaml
yaml_str="""version: '3.8'
services:
my_gpu_service:
image: cv-worker:v1
volumes:
- //mnt/data/loong/classify/:/data
- /mnt/data/yolo/datasets/:/work
working_dir: /data
shm_size: 15g
ports:
- 6006:6006
# - 9000:9000
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['2','3']
capabilities: [gpu]
command: /bin/bash -c 'yolo task=classify mode=train model=/data/yolov8n-cls.pt data=/work/cifar10_copy1
epochs=2 device=1 > /data/yolo1.log 2>&1'"""
# 将 YAML 字符串转换为字典
data = yaml.safe_load(yaml_str)
print(data)
单引号字典格式转双引号json格式:
import json
single_quote_json = {'key': 'value', 'nested': {'inner_key': 'inner_value'}}
# 将字典转换为双引号 JSON
double_quote_json = json.dumps(single_quote_json)
print(double_quote_json)
参考:https://docs.docker.com/compose/gpu-support/
注意:yaml内部gpu对应方式
这里注意:yaml里gpu索引不一样,device_ids: [‘1’,‘3’,‘2’]是外部服务器gpu的索引号,yaml内部gpu索引号是按device_ids列表的索引:及内部0 device_ids第一个实际外部的1,内部1 device_ids第一个实际外部的3,内部2 device_ids第一个实际外部的2;所以下列device=0,1 对应的是device_ids的索引即外部1,3号gpu
外部gpu索引查询,pytorch与nvidia-smi索引不一样
pytorch查询gpu索引情况:
import torch
num_gpus = torch.cuda.device_count()
for i in range(num_gpus):
print(f"GPU {i}: {torch.cuda.get_device_name(i)}")
yaml代码例子
##运行
docker-compose -f aa.yaml up
aa.yaml
version: '3.8'
services:
my_gpu_service:
image: cv-worker:v1
command: /bin/bash -c 'yolo task=classify mode=train model=/data/yolov8n-cls.pt data=/work/cifar10_copy1
epochs=2 device=0,1 > /data/yolo1.log 2>&1'
volumes:
- //mnt/data/loong/classify/:/data
- /mnt/data/yolo/datasets/:/work
working_dir: /data
shm_size: 15g
ports:
- 6006:6006
# - 9000:9000
deploy:
resources:
reservations:
devices:
- driver: nvidia
device_ids: ['1','2','3']
capabilities: [gpu]
或者写法:
gpu指定:count与device_ids方式,总结起来,两个示例的区别在于:
device_ids: [‘1’]:只使用索引为 1 的 GPU 设备。
count: all:系统中的所有 GPU 设备可选
version: '3.8'
services:
my_gpu_service:
image: cv-worker:v1
command: /bin/bash -c 'yolo task=classify mode=train model=/data/yolov8n-cls.pt data=/work/cifar10_copy1
epochs=2 device=0,1 > /data/yolo1.log 2>&1'
volumes:
- //mnt/data/loong/classify/:/data
- /mnt/data/yolo/datasets/:/work
working_dir: /data
shm_size: 15g
ports:
- 6006:6006
# - 9000:9000
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
参考:https://blog.csdn.net/qq_30236895/article/details/104958535
https://xie.infoq.cn/article/79c2c03f5e5c3588d8b5fa06b
https://zhuanlan.zhihu.com/p/371592044
直接安装:
docker run -d -p 8800:8000 -p 9900:9000 --name=portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
运行后web直接打开:ip:9900
首先设置密码后进入首页,选择local可以看到本机的docker状态
显示当前主机硬件资源和容器运行情况,当前 多少个堆栈数(Stacks),运行了 多少个容器(Containers)多少个存活 0 个停止、总共有 多少个镜像(Images) 、多少 个挂载卷和多少个网络设置。 右侧菜单分别为:
App Templates:App 的模板,内置 40 多个常用的服务模板,可以去更新这些,也可以删除。点击新建可以创建适合自己环境的模板,方便快速部署自己的服务。
Stacks:这里是制作自己的 docker compose 里的文件,可以创建自己的 docker compose 快速部署
Containers:管理的主机或者及集群的所有容器,点击需要管理的容器可以查看容器详细信息。进入详情也厚有对应的运维操作:Logs(查看日志),inspect(相当于 docker inspect,查看容器详细信息),Stats(查看容器占据的性能信息,包括占用的内存 CPU 等信息),Console(进入 docker 容器,相当于 exec),Attach(docker attach,不建议使用,也不好用)
Images:镜像操作,可以通过页面进行 pull 操作,可以查看机器上的所有镜像的详细信息,可进行大部分镜像操作(删除,build,import 导入)
Network:展现的是机器或者集群上 network 信息,在多机器 docker 维护中,经常需要创建维护 docker network。
Volume:Volume 就是机器上的数据卷信息,提供创建删除查看的操作。
Events:事件
Host:主机
选择QUICK ACTIONS相关快捷:可以查看log、容器状态、stats查看资源消耗、进入console终端命令