Skip to content

Commit dd79257

Browse files
committed
added README
1 parent c96c98f commit dd79257

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# nvdocker
2+
3+
nvdocker is library built on top of the docker-py python sdk to build and run docker containers using nvidia-docker.
4+

nvdocker/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .nvdocker import NVDockerClient

nvdocker/nvdocker.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#Just testing the docker-py SDK
2+
import docker
3+
4+
class NVDockerClient:
5+
client = None
6+
7+
gpu_devices = ['/dev/nvidiactl', '/dev/nvidia-uvm', '/dev/nvidia1', '/dev/nvidia0']
8+
nvidia_driver = 'nvidia-docker'
9+
volumes = {'nvidia_driver_387.12':{'bind':'/usr/local/nvidia', 'mode':'ro'},
10+
'/vault': {'bind':'/vault', 'mode':'rw'}}
11+
ports = {'8888/tcp':8890,
12+
'6006/tcp':6969}
13+
14+
def __init__(self):
15+
self.client = docker.from_env(version='auto')
16+
17+
def create_container(self, cmd, image=None, is_gpu=False, ports=None, user=""):
18+
home_dir = "/vault/"
19+
if user != "":
20+
home_dir = home_dir + user
21+
22+
if ports is not None:
23+
self.ports['8888/tcp'] = ports[0]
24+
self.ports['6006/tcp'] = ports[1]
25+
26+
if is_gpu:
27+
c = self.client.containers.run(image, cmd, auto_remove=True, ports=self.ports, devices=self.gpu_devices, volume_driver=self.nvidia_driver, volumes=self.volumes, detach=True, working_dir=home_dir)
28+
else:
29+
c = self.client.containers.run(image, cmd, auto_remove=True, detach=True, working_dir=home_dir)
30+
31+
return c.id
32+
33+
def build_image(self, path):
34+
img = self.client.images.build(path);
35+
return img
36+
37+
def get_container_logs(self, cid):
38+
c = self.client.containers.get(cid)
39+
return c.logs()
40+
41+
def get_all_container_ids(self):
42+
return self.client.containers.list()
43+
44+
def stop_container(self, cid):
45+
c = self.client.containers.get(cid)
46+
c.stop()
47+
48+
def start_container(self, cid):
49+
c = self.client.containers.get(cid)
50+
c.start()
51+
52+
def start_all_containers(self):
53+
for c in self.client.containers.list():
54+
c.start()
55+
56+
def stop_all_containers(self):
57+
for c in self.client.containers.list():
58+
c.stop()
59+
60+
def run_cmd(self, cid, cmd):
61+
c = self.client.containers.get(cid)
62+
return c.exec_run(cmd)
63+

0 commit comments

Comments
 (0)