Docker: Dockerfile не может выполнить COPY - PullRequest
1 голос
/ 23 сентября 2019

Я хочу построить образ докера.Внутри моего репозитория находятся следующие файлы:

  • Dockerfile
  • docker-prompt

Мой Dockerfile:

FROM fortio/fortio:1.3.1 as fortiobuild

FROM docker:stable-dind

RUN apk add --no-cache tcpdump apache2-utils lynx git tmux py2-pip apache2-utils vim build-base gettext-dev curl bash-completion bash util-linux jq openssh openssl tree python python-dev py-pip libffi-dev openssl-dev libgcc nfs-utils

ENV COMPOSE_VERSION=1.24.1
RUN pip install docker-compose==${COMPOSE_VERSION}
RUN mkdir /etc/bash_completion.d \
    && curl https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /etc/bash_completion.d/docker \
    && sed -i "s/ash/bash/" /etc/passwd

RUN rm /sbin/modprobe && echo '#!/bin/true' >/sbin/modprobe && chmod +x /sbin/modprobe

COPY ["docker-prompt", "sudo", "/usr/local/bin/"]

Я запускаю этот cmd:

сборка докера -t "myImage"

, но если не получается, выдает следующее:

Шаг 8/8: COPY ["docker-приглашение "," sudo "," / usr / local / bin / "] Копирование не выполнено: stat / var / lib / docker / tmp / docker-builder273771066 / sudo: такого файла или каталога нет

Поскольку неясно, в чем проблема,

Предложения?

1 Ответ

2 голосов
/ 23 сентября 2019
Команда

COPY работает только с источником и местом назначения, если вы хотите присвоить файлу sudo, вам нужно использовать --chown.в противном случае команда копирования будет рассматривать Sudo в качестве исходного пути.

COPY

COPY имеет две формы:

COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"] (this form is required for paths containing whitespace)

Примечание:

Функция --chown поддерживается только в файлах Docker, используемых для создания контейнеров Linux, и не будет работать в контейнерах Windows.Поскольку концепции владения пользователями и группами не переводятся между Linux и Windows, использование / etc / passwd и / etc / group для перевода имен пользователей и групп в идентификаторы ограничивает эту функцию, чтобы она была применима только для контейнеров на основе ОС Linux.

Полагаю, вы ищете способ, подобный

COPY --chown=root:root docker-prompt /usr/local/bin/

...