Allow for a custom docker executable in the make process

Closes: #21
Signed-off-by: Felix Abecassis <fabecassis@nvidia.com>
This commit is contained in:
Evan Lezar 2015-12-11 09:09:59 +01:00 committed by Felix Abecassis
parent c42f9555f1
commit 1bb88f8aa8

View file

@ -1,5 +1,6 @@
# Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved.
OS ?= ubuntu
DOCKER_BIN ?= docker
# CUDA versions
ifeq ($(OS), ubuntu)
@ -30,59 +31,59 @@ default: latest
# CUDA images
latest: devel
docker tag -f cuda:$< cuda
$(DOCKER_BIN) tag -f cuda:$< cuda
devel: $(CUDA_LATEST)
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
runtime: $(CUDA_LATEST)-runtime
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
%: %-devel $(OS)/cuda/%
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
%-devel: %-runtime $(OS)/cuda/%/devel/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/devel
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/devel
%-runtime: $(OS)/cuda/%/runtime/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/runtime
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/runtime
all-cuda: $(CUDA_VERSIONS) latest devel runtime
# cuDNN images
cudnn: cudnn-devel
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
cudnn-devel: $(CUDNN_DEVEL_LATEST)
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
cudnn-runtime: $(CUDNN_RUNTIME_LATEST)
docker tag -f cuda:$< cuda:$@
$(DOCKER_BIN) tag -f cuda:$< cuda:$@
# Special rules for specific cuDNN versions
%-cudnn2-devel: %-devel $(OS)/cuda/%/devel/cudnn2/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn2
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn2
%-cudnn2-runtime: %-runtime $(OS)/cuda/%/runtime/cudnn2/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn2
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn2
%-cudnn3-devel: %-devel $(OS)/cuda/%/devel/cudnn3/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn3
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn3
%-cudnn3-runtime: %-runtime $(OS)/cuda/%/runtime/cudnn3/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn3
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn3
%-cudnn4-devel: %-devel $(OS)/cuda/%/devel/cudnn4/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn4
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/devel/cudnn4
%-cudnn4-runtime: %-runtime $(OS)/cuda/%/runtime/cudnn4/Dockerfile
docker build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn4
$(DOCKER_BIN) build -t cuda:$@ $(OS)/cuda/$*/runtime/cudnn4
all-cudnn: $(CUDNN_VERSIONS) cudnn cudnn-devel cudnn-runtime
# caffe-nv images
caffe: $(OS)/caffe/Dockerfile
docker build -t caffe $(OS)/caffe
$(DOCKER_BIN) build -t caffe $(OS)/caffe
push: all-cuda all-cudnn
if [ -z "$(USERNAME)" ]; then \
@ -90,9 +91,9 @@ push: all-cuda all-cudnn
exit 1; \
fi; \
# Retag all images with the username as a prefix.
docker images | awk '$$1 == "cuda" { print $$2 }' | xargs -I {} docker tag -f cuda:{} $(USERNAME)/cuda:{}
docker push $(USERNAME)/cuda
docker images | awk '$$1 == "$(USERNAME)/cuda" { print $$2 }' | xargs -I {} docker rmi $(USERNAME)/cuda:{}
$(DOCKER_BIN) images | awk '$$1 == "cuda" { print $$2 }' | xargs -I {} $(DOCKER_BIN) tag -f cuda:{} $(USERNAME)/cuda:{}
$(DOCKER_BIN) push $(USERNAME)/cuda
$(DOCKER_BIN) images | awk '$$1 == "$(USERNAME)/cuda" { print $$2 }' | xargs -I {} $(DOCKER_BIN) rmi $(USERNAME)/cuda:{}
pull:
if [ -z "$(USERNAME)" ]; then \
@ -100,9 +101,9 @@ pull:
exit 1; \
fi; \
# Download all images from the Docker Hub and retag them to remove the prefix.
docker pull --all-tags $(USERNAME)/cuda
docker images | awk '$$1 == "$(USERNAME)/cuda" { print $$2 }' | \
xargs -I {} sh -c 'docker tag -f $(USERNAME)/cuda:{} cuda:{} ; docker rmi $(USERNAME)/cuda:{}'
$(DOCKER_BIN) pull --all-tags $(USERNAME)/cuda
$(DOCKER_BIN) images | awk '$$1 == "$(USERNAME)/cuda" { print $$2 }' | \
xargs -I {} sh -c '$(DOCKER_BIN) tag -f $(USERNAME)/cuda:{} cuda:{} ; $(DOCKER_BIN) rmi $(USERNAME)/cuda:{}'
clean:
docker rmi -f `docker images -q --filter "label=com.nvidia.cuda.version"`
$(DOCKER_BIN) rmi -f `$(DOCKER_BIN) images -q --filter "label=com.nvidia.cuda.version"`