docker和nvidia-docker离线安装(GPU)
docker和nvidia-docker离线安装(GPU)
下载安装文件
官方地址:https://download.docker.com/linux/static/stable/x86_64/
下载自己合适的版本,这里我是下载docker-20.10.9.tgz
解压安装
简单粗暴一点:
tar zxf docker-20.10.9.tgz
mv docker/* /usr/bin/
rm -rf docker*.tgz
文件配置
进入/etc/systemd/system/目录,并创建docker.service文件:
cd /etc/systemd/system/
touch docker.service
复制以下信息到docker.service:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[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 tcp://0.0.0.0:2375 --graph=/home/docker -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP
# 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
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# 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
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
ExecStart可以自定义docker的解压目录,graph可以自定义docker的RootDir目录(按需设置路径,启动前需要创建该目录),其他不用动。
给docker.service文件添加执行权限
sudo chmod 777 /etc/systemd/system/docker.service
重新加载配置文件
systemctl daemon-reload //重载systemd下 xxx.service文件
systemctl start docker //启动Docker
systemctl enable docker.service //设置开机自启
PS:如在start阶段提示level=warning msg=“The “-g / --graph” flag is deprecated. Please use “–data-root” instead”,则将docker.service配置中的–graph替换为 --data-root。
普通版本的Docker安装过程到此处即可,/etc/docker/daemon.json配置内容按需设置,也可以直接在文件内写一个{}。
添加nvidia-docker支持
我们执行如下命令可以查看展示 nvidia-container-runtime 包的全部依赖:
yum deplist nvidia-container-runtime
执行如下命令将软件的所有依赖包下载到当前目录下:
repotrack nvidia-container-runtime
将上面下载下来的所有 rpm 包上传到服务器,然后执行如下命令进行离线安装,该命令会自动解决依赖。
rpm -Uvh --force --nodeps *.rpm
CentOS 8.5版本无需覆盖安装:
rpm -Uvh --nodeps *.rpm
设置运行环境nvidia
vi /etc/docker/daemon.json并填写以下内容:
{
"default-runtime" : "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
常见问题
如启动docker时卡住并启动失败,可执行getenforce检查设置,如果结果为Enforcing,可执行setenforce 0设置。
永久生效可以直接vi /etc/selinux/config文件,设置SELINUX=disabled