Что значит . значит в докере? Означает ли это текущий рабочий каталог образа или локальный компьютер? - PullRequest
3 голосов
/ 07 марта 2019

Я не уверен, означает ли ., что это сокращенное сокращение текущего каталога изображения или текущий рабочий каталог на локальном компьютере.Или это то же самое значение . в большинстве консольных команд, как, по существу, выделение всех в текущем каталоге.

COPY somecode.java .

#copy the rest of the code

COPY . .

. также, по-видимому, означает найти файл Docker в текущем каталоге.

docker build -t image-tag .

Ответы [ 4 ]

5 голосов
/ 07 марта 2019

. просто означает «текущий рабочий каталог»

сборка Docker

В контексте команды docker build вы используете его, чтобы указать, что контекст сборки для docker build - текущий рабочий каталог.Вот так:

docker build -t mytag:0.1 .

Допустим, у вас есть такая структура:

/home/me/myapp/
├── Dockerfile
├── theapp.py

И вы вызываете команду docker build из /home/me/myapp - вы передадите текущий рабочий каталог какконтекст сборки.Это означает, что при сборке docker увидит следующую файловую структуру:

/
├── Dockerfile
├── theapp.py

Dockerfile

В контексте Dockerfile это означает то же самое.Как внутри, так и снаружи изображения.

Возьмем эту инструкцию COPY, например:

COPY . /app

Здесь . означает текущий рабочий каталог, в котором выполняется команда docker build,Это будет относительно контекста построения, который передается команде docker build.

Для этой инструкции COPY:

COPY theapp.py .

Это означает, что взять файл theapp.py ископируйте его в рабочий каталог создаваемого образа докера.Этот каталог может быть установлен во время сборки с помощью инструкции WORKDIR, так что:

WORKDIR /app
COPY theapp.py .

оставит вас с файлом /app/theapp.py внутри полученного образа докера.

Наконец,эта COPY инструкция:

COPY . .

Средство берет все из рабочего каталога, в котором выдается команда сборки docker, относительно контекста сборки, который ему передается.И скопируйте его в текущий рабочий каталог образа докера.

4 голосов
/ 07 марта 2019

Я видел 3 . символов в вашем вопросе, поэтому позвольте мне расширить один за другим.

Первый, как вы понимаете, символ . означает текущий каталог.

В вашем Dockerfile

COPY . .

Вторая точка представляет текущее местоположение на вашей виртуальной машине. Всякий раз, когда вы запускаете команду cd в Dockerfile. Это может быть легко понять.

Первая точка немного более непонятна. Первый символ точки представляет текущее местоположение на вашем хост-компьютере. Местоположение, которое вы вводите после команды docker build, например: "docker build [options] <location>".

Команда сборки Docker

Точка означает текущий каталог, когда вы вызываете команду docker build. Например:

[~]$ docker build .

Символ точки, представленный для домашней директории этого пользователя по умолчанию на вашей реальной машине.

1 голос
/ 07 марта 2019

Это зависит от контекста. В вашем COPY somecode.java . это изображение. В COPY . . это оба. Первая точка находится на локальном компьютере, а вторая точка - это изображение.

В команде docker build он сообщает Docker взять файлы для вновь созданного образа из рабочего каталога на локальном компьютере.

Как говорили другие, это в основном означает "текущий рабочий каталог". Но при создании образа Docker их два. Один в вашей локальной машине, где вы строите образ. Второй - это файловая система, встроенная в образ.

0 голосов
/ 07 марта 2019

. (Точка) означает текущий рабочий каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...