GPU机器docker环境离线安装

这篇具有很好参考价值的文章主要介绍了GPU机器docker环境离线安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 秋风阁(https://focus-wind.com/)

docker 环境离线二进制安装

  • docker 二进制包下载位置

下载二进制包

在无法联网的环境中安装软件包,我们无法依赖于现成的包管理工具,只能通过一个一个的下载包的方式来进行软件的下载安装,但这样操作难免会遇到依赖问题,复杂的依赖问题会严重的影响我们环境的下载。所以可以通过下载二进制可执行文件的方式来避免下载依赖的问题。

在 https://download.docker.com/linux/ 路径下选择static目录而不是其他Linux发行版来选择下载的包。根据系统CPU架构和docker版本选择相应的tgz压缩包。

docker下载位置包括docker-${version}.tgzdocker-rootless-extras-${version}.tgz两种版本的docker二进制文件压缩包。其他rootless-extras版本是为解决docker使用root身份存在的运行安全风险提出的rootless mode方案,目的是让dockerd守护进程以非root身份运行,根据需要选择对应版本。

解压.tgz包

解压.tgz压缩包:

tar -xzvf docker-xxx.tgz

添加可执行权限:(若是从其他系统上传到linux,可能会导致文件的权限信息更改,需要给相关文件添加权限以保证文件执行权限正常)

chmod +x docker/*

迁移文件到/usr/bin/目录下

/usr/bin/目录是Linux用户可执行文件存放位置,将可执行文件存储在该路径下,在任意位置都可调用可执行脚本,否则就只能在当前路径下调用可执行脚本

cp -p docker/* /usr/bin/

启动docker

docker/*等可执行文件迁移到/usr/bin目录下,理论上在任意位置都可直接调用docker命令。但此时所谓的docker只是个空壳子,docker实际上分为客户端和服务端,docker命令本质上是一个客户端调用器,调用docker命令,向docker引擎发送信号,由服务端dockerd引擎来具体执行docker容器的操作,所以我们需要在后台启动dockerdcontainerd服务。

dockerd是docker用来管理容器的守护进程。

containerd是从docker中剥离的容器虚拟化技术,docker对容器的管理和操作基本都是通过containerd完成的

手动启动docker

由于二进制文件不是直接通过包管理工具安装的,所以不会被systemctl进行管理。

通过手动启动docker引擎,而不是由systemctl来管理,操作简单,不容易出错,但缺点是每次主机重启都需要手动启动引擎。

nohup dockerd &
nohup containerd &

systemctl启动docker

若觉得每次主机重启都需要手动启动docker引擎的操作麻烦,可以添加配置文件,通过systemctl来管理docker引擎。

systemctl docker配置文件:

  • /usr/lib/systemd/system/docker.service
  • /usr/lib/systemd/system/docker.socket
  • /usr/lib/systemd/system/containerd.service
docker.service

/usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process
OOMScoreAdjust=-500

[Install]
WantedBy=multi-user.target
docker.socket

/usr/lib/systemd/system/docker.socket

[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target
containerd.service

/usr/lib/systemd/system/containerd.service

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
设置开机重启
systemctl enable docker.service
启动docker服务
systemctl start docker.service

离线安装nvidia-docker(docker容器内部使用GPU资源)

  • Docker GPU Support
  • libnvidia-container(软件包下载地址)

nvidia-container-runtime 安装,容器,docker,linux,docker,运维
nvidia-container-runtime 安装,容器,docker,linux,docker,运维
阅读docker官方文档可知,docker runtime在运行使用Nvidia GPU时,需要nvidia-container-runtime插件才可以使用。经过在nvidia-container-runtime(repo)的文档查阅可知,nvidia容器工具包的相关软件包目前已由https://nvidia.github.io/libnvidia-container存储库提供服务。在GitHub libnvidia-container仓库的gh-pages分支下,可以看到相关的软件包(建议选择stable文件夹下稳定版本的软件包来进行离线下载)。

libnvidia-container核心包包括:

  • libnvidia-container-devel
  • libnvidia-container-static
  • libnvidia-container-tools
  • libnvidia-container1
  • nvidia-container-runtime
  • nvidia-container-toolkit
  • nvidia-docker2

根据自己的系统环境和CPU架构来选择合适的软件包进行下载。

rpm源安装离线软件包

rpm -Uvh *.rpm --nodeps --force

rpm文件调用以上命令强制安装当前路径下的所有离线.rpm软件包。

deb源安装离线软件包

dpkg -i --force-overwrite *.deb

deb文件通过以上命令强制安装当前路径下的所有离线.deb软件包。

修改daemon文件,指定docker runtime配置

修改配置/etc/docker/daemon.json

{
	"default-runtime": "nvidia",
	"runtimes": {
		"nvidia": {
			"path": "nvidia-container-runtime",
			"runtimeArgs": []
		}	
	}
}

测试nvidia-container-runtime

测试nvidia-container-runtime是否安装成功

nvidia-container-runtime -v

调用以上命令,显示runc等信息,即表示nvidia-container-runtime插件已完成安装。

测试nvidia-container-runtime运行状态

docker run --rm --runtime=nvidia nvidia/cuda nvidia-smi

调用以上命令,运行一个容器,在容器内部调用nvidia-smi命令,查看容器是否正常运行。若报错详细检查是否缺少相关依赖库。

docker设置默认runtime

下载安装nvidia-container-runtime后,若需要在容器内部调用GPU,仍需要在启动容器或compose等配置文件中指定runtime,若不想在启动容器时指定runtime,可以将nvidia-container-runtime设置为docker默认runtime。

docker runtime由dockerd在启动时指定。dockerd是docker用来管理容器的守护进程。docker实际上分为服务端和客户端。客户端调用docker命令向服务端dockerd引擎发送命令,由dockerd引擎来执行容器的具体操作,dockerd直接控制docker的daemon行为。通过在启动dockerd时指定runtime。

关闭当前运行dockerd进程

查看dockerd进程号

ps -ef | grep dockerd

kill掉dockerd运行进程

kill -9 pid

重启dockerd并指定runtime

nohup dockerd --default-runtime nvidia &

修改docker.service配置文件(systemctl)

若是通过systemctl启动的docker服务,需要修改docker.service文件,确保每次重启都会启动nvidia-container-runtime而不是docker原生runtime。
修改/usr/lib/systemd/system/docker.service文件的ExecStart配置项:文章来源地址https://www.toymoban.com/news/detail-603920.html

ExecStart=/usr/bin/dockerd --default-runtime nvidia -H fd:// --containerd=/run/containerd/containerd.sock

到了这里,关于GPU机器docker环境离线安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS7.9离线安装Docker环境

    1. 下载合适的Docker安装包 Docker安装包下载地址: Index of linux/static/stable/x86_64/ https://download.docker.com/linux/static/stable/x86_64/ 进入地址页面,如下图: 我下载的是: docker-23.0.1.tgz 版本 2. 将下载好的Docker安装包上传到服务器上,我这边是上传到了 /root  目录下 3. 解压  docker-23.0.

    2024年02月07日
    浏览(55)
  • Linux离线环境安装部署docker(超详细)

    可以参考菜鸟教程:https://www.runoob.com/docker/centos-docker-install.html 安装插件 添加仓库地址: 安装指定版本的docker-ce和docker-ce-cli: 启动docker,设为开机自启动: docker-Linux下载地址 搭建docker环境准备 在能连网的服务器上下载所需的镜像,例如 上传docker压缩包及镜像上传到需要部署的服

    2024年02月03日
    浏览(59)
  • Linux离线arm环境安装部署docker详细教程

    1、下载 通过官网下载docker安装包,找arm环境的安装包,如果是x86环境可以下载对应的安装包 Index of linux/static/stable/aarch64/ 2、上传到服务器上,通过rz命令 上传成功后解压 tar -xvf docker-24.0.6.tgz  3. 复制文件到 /usr/bin cp ./docker/* /usr/bin 4. 创建docker.service vim  /etc/systemd/system/doc

    2024年02月03日
    浏览(46)
  • Docker之centos7环境离线安装

      Docker是一个开源的应用容器引擎,可以让开发者将应用及其依赖打包在一个虚拟的容器中,方便地部署、移植、升级和管理。Docker可以运行在Linux、Windows和MacOS等操作系统上,并且可以在不同的平台之间进行交互和迁移。Docker的主要特点包括轻量级、快速、易于使用、可

    2024年02月10日
    浏览(58)
  • linux(centos7)离线安装A100显卡驱动cuda/cudnn 以及解决docker not select device driver...gpu

    1.确认GPU型号和操作系统版本,本示例中以A100以及操作系统为Centos 7.9进行操作。 准备GPU驱动和CUDA 11.2软件包,在nvidia官网进行驱动包和CUDA包下载 链接: link linux系统均选择 Linux 64-bit CUDA Toolkit选择最新版本 如您需要老版本CUDA,请前往老版本CUDA下载 本示例中使用CUDA 11.2。 访

    2024年02月15日
    浏览(50)
  • Docker环境离线安装教程,附docker容器镜像打包,导出,导入加载镜像等

    (此方式在某些环境下可能不支持,如果不支持 请参考方式2) 下载文件:https://dn-dao-get.daocloud.io/docker/docker-1.13.0-centos-7.2.1511.tar.gz 上传,解压文件, 进入目录 执行 :bash install.sh 启动docker服务:service docker restart 下载地址:https://download.docker.com/linux/static/stable/x86_64/ 验证:

    2024年02月15日
    浏览(60)
  • Xilinx Ubuntu环境下docker&Vitis AI 3.0基于GPU的环境安装

    图1 Visiti AI用户开发环境需求 Xilinx官网Vitis AI入门指南 Xilinx Github Vitis AI资料 首先参考官网资料中的入门部分进行环境设置,显卡驱动如何安装这里就不作介绍了。 1.克隆 Vitis AI 存储库以获取示例、参考代码和脚本。 2.安装 Docker。     这里不建议参考官方链接给出的官方

    2024年02月16日
    浏览(44)
  • 离线安装配置linux环境(centerOS7离线安装nginx、postgis、redis、minio、kkview、jdk、docker)

    注意 本文所涉及资源地址 所需前置知识(会的可以忽略) 关于yum downloadonly 离线安装docker教程 查看系统中是否已安装 gcc 如果显示版本号,则说明已经安装 否则进行如下安装操作 进入 /usr/local/nginx_package/gcc 目录,执行以下命令安装gcc: 解压 安装 其中​–nodeps​表示忽略依

    2024年02月04日
    浏览(54)
  • Centos /Linux环境下利用Docker 安装mysql5.7镜像(含离线安装),启动mysql镜像并初始化数据库

    使用有网的服务器下载好镜像 保存下载好的镜像成tar 将镜像上传到所需服务器(放在固定位置) 导入镜像 注意名称,这里的mysql5.7和上面打包 docker save imageid mysql5.7 的名称一致,本例未改名 查看导入的镜像,并重新命名镜像 创建本地数据库目录、配置文件以及日志目录(

    2024年02月10日
    浏览(74)
  • 卸载cpu版本的torch并离线安装对应的gpu版本

            每次从github上安装项目对应的库,利用requirements.txt安装很容易出现版本不对应的情况,尤其是将torch的gpu版本安装成cpu。这里记录一些查看版本的指令和离线安装的方法,就不用每次百度啦!(注:其他库的离线安装也可以用同样的方法,只需要去相应的网站下载

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包