容器内执行nvidia-smi报错提示Failed to initialize NVML

使用GPU的容器运行了一个训练任务,一段时间以后查看训练任务失败,进POD容器内执行nvidia-smi返回"FailedtoinitializeNVML:UnknownError"。目前该问题是一个已知问题,是由于在docker环境中daemon.json文件中配置了"exec-opts": ["native.cgroupdriver=systemd"]同时通过systemctldaemon-reload等命令守护进程重载命令,导致容器化的GPU工作负载可能会突然失去对G...

阅读全文

containerd镜像仓库相关配置

之前使用docker配置的可以查看这个笔记https://sulao.cn/post/786.html进行配置现在使用containerd以后需要在config.toml中配置仓库的相关信息修改/etc/containerd/config.toml文件找到[plugins."io.containerd.grpc.v1.cri".registry]的配置然后添加的下面这样的[plugins."io.containerd.grpc.v1.cri".registry]  [plugins.&quo...

阅读全文

Docker查看镜像构造和层次

我们使用docker时也会遇到镜像commit超过最大层数的问题,所以解决这个问题的前提是我们需要了解怎么样查看镜像构造和层级目前docker构建镜像最大是127层,在dockerbuild时基本每行命令都是一层,再构建好使用时我们也会去再次commit镜像,那么这样也算是新的层级。查看docker构造和层级主要有两个命令,一个是inspcect,另一个是history我们使用inspect查看一个镜像的构造docker inspect aedb33724815这里面展示了整个镜像构建的命令结果和层级,具体层级可以使用下面命令进行...

阅读全文

Docker清理数据和目录结构介绍

今天上集群查看有POD状态不正常,然后describePOD事件提示docker: Error response from daemon: open /var/lib/docker/overlay2/***: no such file or directory出现这个提示的意思是overlay2下面的这个文件没有了,出现这个问题的原因是dockerrootdir目录已经写满了,rootdir的默认路径就是/var/lib/docker,...

阅读全文

nerdctl的安装和常用命令

nerdctl是一个类似于DockerCLI的命令工具,用于管理和运行容器,它提供与Docker兼容的接口,并支持和containerd集成。nerdctl安装首先下载安装包wget https://github.com/containerd/nerdctl/releases/download/v1.5.0/nerdctl-1.5.0-linux-amd64.tar.gztar -zxvf nerdctl-1.5.0-linux-amd64.tar.gzcp -a nerdctl /u...

阅读全文

containerd常用基本命令

在2016年12月14日,Docker公司宣布将containerd从Docker中分离,由开源社区独立发展和运营。Containerd完全可以单独运行并管理容器,而Containerd的主要职责是镜像管理和容器执行。同时,Containerd提供了containerd-shim接口封装层,向下继续对接runC项目,使得容器引擎DockerDaemon可以独立升级。Containerd可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等。总结一下,它主要负责干以下事情:管理容器的生命周...

阅读全文

docker日志告警Your kernel does not support swap limit capabilities or the cgroup is not mounted

在k8s集群重启了一个节点,该节点启动以后在docker日志里面有如下警告信息WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted我们在安装k8s集群的时候就已经将swap注释掉了,按道理不应该再有swap相关的警告或者错误信息后面经过分析,出现这种问题只会在ubuntu和debian的操作...

阅读全文

docker部署keepalived非抢占单播模式

之前咱们学习了keepalive的各种模式,详情可以查看这个笔记https://sulao.cn/post/877.html,这次我们就在上次学习的基础上部署keepalive非抢占单播模式在配置部署之前我们我们先了解下单播,组播,广播这些词的概念单播:在同一局域网内,两个设备点对点的通信就是单播通信。组播:在同一网络可达范围内,一个网络设备与关心其数据的部分设备进行通信就是组播。广播:在同一网络可达范围内,一个网络设备向本网络内所有设备进行通信就是广播。在组播模式下,keepalived将全部的心跳包信息都会向默认的224.0.0.18的组播地...

阅读全文

docker和docker-compose限制容器CPU内存使用的方法

在一些情况下,单机可能需要开启很多容器,那么容器多了很有可能导致硬件资源的挤兑,所以需要做每个容器做一些限制,今天我们就来学习下限制容器资源的方法CPU的限制方法,我们还是用上次学习的例子flask的那个镜像docker run -itd --cpus=2 --name app-flask -p 5001:5000 flask默热容器使用CPU是无限制的,使用了cpus参数限制了容器使用CPU数量,除了这个还可以制定cpu分配的优先级,默认是1024,数字与越大,优先级越高d...

阅读全文

使用Dockerfile构建flask镜像

之前对dockerfile进行了一些构建参数的学习,今天自己构建了一个常用的flask镜像,我个人认为使用dockerfile构建是为了自定义以及定制化的一些环境需求而使用的,例如自己写的python程序需要预装一些模块,开机启动我写的脚本或者制定位置启动程序等等,然而直接拉取docker仓库的镜像满足不了我的需求,从而需要dockerfile来构建,下面是我构建的flask镜像,很简单,只是简单的初步学习,后面有项目了再分享一些项目上构建的复杂镜像/data/app目录下主要有三个文件Dockerfile,requirements.txt,app.py...

阅读全文