docker-compose 升级;yaml文件编写;gpu使用;Portainer监控管理容器

发布时间:2023年12月18日

1、docker-compose 升级(现在已经2.*版本,升级使支持gpu)

参考: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

在这里插入图片描述

2、yaml文件编写(字典转yaml)

安装: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)

3、gpu使用

参考: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]

4、Portainer监控管理容器

参考: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终端命令
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_42357472/article/details/135022668
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。