Time Machine
内容提要
本文介绍如何利用Docker容器技术简化CUDA和TensorFlow环境配置,以及搭建私有云盘。文章首先解释Docker镜像分层存储和共享存储原理,然后详细说明安装Nvidia-docker以调用GPU,并测试CUDA和TensorFlow。最后,通过OwnCloud镜像和Docker Compose配置MySQL数据库,实现私有云盘的部署与使用。
延伸解读
镜像分层与共享存储的实际意义
Docker镜像采用分层存储,每层记录与上一层的差异,拉取时只下载缺失的层,节省带宽和磁盘空间。共享存储允许多个容器共用底层只读镜像,提高资源利用率。但容器层是可写的,删除容器后数据丢失,因此重要数据应通过挂载卷持久化。理解这一机制有助于合理设计镜像和容器,避免数据丢失。
Nvidia-docker的安装与使用要点
Nvidia-docker是NVIDIA封装的Docker命令,用于让容器调用GPU,等效于docker --runtime=nvidia。安装前需确保显卡驱动和Docker已就绪,若已有1.0版本需先卸载。安装nvidia-docker2后需重载Docker守护进程。测试时运行nvidia/cuda镜像并执行nvidia-smi即可验证GPU是否可用。
Docker Runtime的多样性
Docker Runtime是容器运行时的规范,由OCI维护。最初Docker使用LXC,后基于libcontainer开发了runC。此外还有rkt、runV等,Intel的Clear Containers和OpenStack的Kata Containers是新兴方案。不同Runtime在隔离性、性能等方面各有特点,选择时需根据需求权衡。
私有云盘搭建的注意事项
利用OwnCloud镜像可快速搭建私有云盘,但默认使用SQLite,不适合大数据量或桌面客户端同步,建议改用MySQL。通过Docker Compose配置MySQL可实现数据持久化和外部数据库支持。挂载本地目录到容器可保存数据,但需注意权限和备份。访问时需使用yml中配置的数据库信息。
Q&A
Docker镜像的分层存储和共享存储是如何工作的?
Docker镜像采用分层存储,每层表示与上一层的差异。拉取镜像时,只下载本地缺失的层,共享存储方式提高了资源利用效率。容器在镜像层上建立可写层,删除容器即可写层丢失。
如何安装Nvidia-docker2?
先卸载旧版1.0(如果有),然后添加NVIDIA的仓库并更新软件源,最后安装nvidia-docker2并重载Docker守护进程。具体命令:curl添加gpgkey和list文件,apt-get update,apt-get install -y nvidia-docker2,pkill -SIGHUP dockerd。
如何测试CUDA是否成功调用GPU?
运行nvidia/cuda镜像并进入bash,执行nvidia-smi命令。如果能看到GPU信息,说明CUDA成功调用GPU。示例命令:docker run --runtime=nvidia -it --name cuda --rm nvidia/cuda:9.0-base /bin/bash,然后输入nvidia-smi。
如何通过Docker运行TensorFlow并使用Jupyter Notebook?
使用nvidia-docker命令运行tensorflow/tensorflow镜像,并映射端口8888。例如:nvidia-docker run -it -d --name tensor -p 8888:8888 tensorflow/tensorflow。然后通过浏览器访问localhost:8888,使用token登录Jupyter Notebook。
Docker Runtime是什么?有哪些常见的Runtime?
Docker Runtime是容器运行时的规范,由OCI维护,负责与操作系统内核协作提供容器运行环境。常见的Runtime包括LXC、runC、rkt、runV等,Kata Containers是新兴的Runtime。
如何利用Docker和OwnCloud搭建私有云盘?
拉取owncloud镜像并运行,例如docker run -d -p 80:80 owncloud:8.1。数据默认保存在/var/www/html/data,可以使用-v挂载本地目录。对于数据库,推荐使用MySQL,可通过Docker Compose配置。
OwnCloud使用MySQL数据库时如何配置?
可以使用Docker Compose编写yml文件,定义owncloud和mysql服务,设置环境变量如MYSQL_ROOT_PASSWORD、MYSQL_DATABASE等。然后运行docker stack deploy或docker-compose up。在OwnCloud初始化时选择MySQL/MariaDB,填写数据库主机为mysql,用户root,密码等。