若docker-ce、nvidia、CUDA等都安裝完成之后,開啟docker服務時,能夠正常運行,並有預測結果,那表示服務開啟沒問題;若都安裝成功之后,用docker命令開啟服務時,一直報錯,可能表示你沒有安裝nvidia-docker2:
報錯信息:
tf-serving@tfserving-KVM:~/model/yolo$ docker: Error response from daemon: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v1.linux/moby/f40efd9bd62fc00e53e1d48ea0cbbf8e2c76efdac28238239c6a0c49f52aaebc/log.json: no such file or directory): fork/exec /usr/bin/nvidia-container-runtime: no such file or directory: : unknown.
$ systemctl status docker.service 結果: docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/docker.service.d └─override.conf Active: failed (Result: start-limit-hit) since 四 2019-06-20 11:43:26 CST; 8s ago Docs: https://docs.docker.com Process: 8024 ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime (code=exited, status=1/FAILURE) Main PID: 8024 (code=exited, status=1/FAILURE) 6月 20 11:43:26 tfserving-KVM systemd[1]: Failed to start Docker Application Container Engine. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Unit entered failed state. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Failed with result 'exit-code'. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Service hold-off time over, scheduling restart. 6月 20 11:43:26 tfserving-KVM systemd[1]: Stopped Docker Application Container Engine. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Start request repeated too quickly. 6月 20 11:43:26 tfserving-KVM systemd[1]: Failed to start Docker Application Container Engine. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Unit entered failed state. 6月 20 11:43:26 tfserving-KVM systemd[1]: docker.service: Failed with result 'start-limit-hit'.
出現類似這樣的信息,錯誤,解決辦法,可嘗試:
(1)重新安裝docker-ce及tensorflow_model_server;
(2)安裝nvidia-docker2,步驟如下:
0 If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -
f
sudo apt-get purge -y nvidia-docker
sudo apt-get purge -y nvidia-docker
1. 創建用戶組
sudo groupadd docker
sudo groupadd docker
2.添加用戶進入docker組,以便該用戶可以使用docker
sudo gpasswd -a ${USER} docker
sudo gpasswd -a ${USER} docker
3.重啟服務
sudo service docker restart
sudo service docker restart
4.修改docker倉庫和存放目錄
sudo vim /etc/docker/daemon.json
sudo vim /etc/docker/daemon.json
5.修改如下,其中https://cwoel6s9.mirror.aliyuncs.com 為從阿里服務器申請的鏡像地址,/data/docker 為存放目錄
{
"registry-mirrors": [
"https://cwoel6s9.mirror.aliyuncs.com"
],
"graph":"/data/docker",
"storage-driver": "overlay",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
"registry-mirrors": [
"https://cwoel6s9.mirror.aliyuncs.com"
],
"graph":"/data/docker",
"storage-driver": "overlay",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
6.重啟docker,並使用docker info查看修改信息
systemctl daemon-reload
systemctl restart docker
docker info
systemctl daemon-reload
systemctl restart docker
docker info
7.nvidia-docker 安裝,添加源
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
8.安裝nvidia-docker2軟件包並重新加載Docker守護程序配置
sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd
sudo apt-get install nvidia-docker2
sudo pkill -SIGHUP dockerd
安裝完成后,當需要使用gpu時,使用nvidia-docker代替docker!
# 注意:執行這一步,如果沒有安裝nvidia驅動,會報錯:
# docker:ERROR response from Daemon....
# 安裝nvida驅動就可以了