- 查看当前运行的容器
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8aac100dd301 1e20acd39495 "/bin/bash" 4 days ago Up 44 hours 0.0.0.0:8002->8888/tcp cuda
- 导出该容器
[root@localhost ~]# docker export 8aac100dd301 > container_run.tar
[root@localhost ~]# ls
container_run.tar
导出成功
- 将打出镜像拷贝至另一台服务器
- 导入容器
docker import container_run.tar vision/centos:v1.0.1
- 查看镜像
[root@localhost envs]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vision/centos v1.0.1 5a16c9b914ff About an hour ago 6.03GB
- 运行
[root@localhost envs]# docker run --runtime=nvidia -d -it --name vision_run_1.0.1 -e NVIDIA_VISIBLE_DEVICES=0 -e NVIDIA_DRIVER_CAPABILITIES=compute,video,utility --volume /usr/local/cuda/lib64:/usr/local/cuda/lib64 -v /output:/home/out 5a16c9b914ff
发现启动不了,报错:
docker: Error response from daemon: invalid restart policy '--runtime=nvidia'.
- 原因分析
系统在运行容器的时候默认加上了 /bin/bash 指令,导出容器之后运行时系统不会自动加上该命令,所以导致出错。
- 解决方法
在启动命令结尾 追加 /bin/bash 指令
docker run --runtime=nvidia -d -it --name vision_run_1.0.1 -e NVIDIA_VISIBLE_DEVICES=0 -e NVIDIA_DRIVER_CAPABILITIES=compute,video,utility --volume /usr/local/cuda/lib64:/usr/local/cuda/lib64 -v /icooper/vision_output:/icooper 5a16c9b914ff /bin/bash