当前位置:   article > 正文

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

docker-compose升级

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版本
下载地址:
https://github.com/docker/compose/releases/tag/1.29.2
https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
在这里插入图片描述

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",
                ],
            
            }
        }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

字典转yaml:

import yaml

# 保存YAML文件
with open("detect1.yaml", "w") as f:
    yaml.dump(data, f, default_flow_style=False, sort_keys=False)
  • 1
  • 2
  • 3
  • 4
  • 5

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

单引号字典格式转双引号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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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)}")
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述在这里插入图片描述

yaml代码例子

##运行
docker-compose  -f aa.yaml up
  • 1
  • 2

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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

或者写法:
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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

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
  • 1

在这里插入图片描述
运行后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终端命令
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/74224
推荐阅读
相关标签
  

闽ICP备14008679号