Использование это Dockerfile
, для простоты выделены только важные детали:
RUN cd /opencv-$OPENCV_VERSION/cmake_binary \
&& cmake -DBUILD_TIFF=ON \
&& make install
## Compress the openCV files so you can extract them from the docker easily
RUN tar cvzf opencv-$OPENCV_VERSION.tar.gz --directory=$OPENCV_INSTALL_PATH .
Теперь я хочу собрать свое приложение в новом контейнере, поэтому, насколько я понимаю, я могу перейти к документации:
FROM docker-opencv-cuda:cv3.3.1_cuda8 AS opencv
COPY -from=opencv /opencv/ /opencv/
Однако я получаю сообщение об ошибке:
недопустимо из значения флага opencv: доступ по запросу запрещен для opencv, хранилище не существует или может потребоваться «вход в систему докера»
Оглядываясь вокруг, кажется, что COPY -from
пытается сослаться на частный или публичный репозиторий, но я бы хотел, чтобы он искал мою локальную версию, как docker image ls
сообщает:
REPOSITORY TAG IMAGE ID
docker-opencv-cuda cv3.3.1_cuda8 xxxx
docker-opencv-cuda cv3.3.1_cuda9 yyyy
Как я могу делать то, что хочу? Добавление в репозиторий недопустимо, так как позже у меня будет проприетарный код, которым я не могу поделиться и т. Д.
ОБНОВЛЕНИЕ : Возможно, я нашел ошибку? У меня Docker 18.09.0, и даны строки:
ARG CV_VERSION=cv3.3.1_cuda8
FROM docker-opencv-cuda:$CV_VERSION AS opencv
COPY -from=opencv /opencv/ /opencv/
COPY -from=docker-opencv-cuda:$CV_VERSION /opencv/ /opencv/
COPY -from=docker-opencv-cuda:cv3.3.1_cuda8 /opencv/ /opencv/
Работает только третий COPY
с полной меткой -from
.
ОБНОВЛЕНИЕ 2 : проблема новичка в Docker. Мой Dockerfile
неверен, так как -from
не должен ссылаться на текущий FROM
, так что все в порядке и делает то, что я хочу:
ARG CV_VERSION=cv3.3.1_cuda8
FROM docker-opencv-cuda:$CV_VERSION AS opencv
# Switch context so the OpenCV files no longer exist in the current image
FROM another_package
COPY -from=opencv /opencv/ /opencv/
COPY -from=docker-opencv-cuda:$CV_VERSION /opencv/ /opencv/
COPY -from=docker-opencv-cuda:cv3.3.1_cuda8 /opencv/ /opencv/