
Я проходил онлайн-урок, чтобы узнать о dockerfiles. Там был вопрос викторины:
Команда Dockerfile WORKDIR изменяет каталоги:
- только для остальной части Dockerfile
- так и в готовом изображении.
Мой выбор (неправильный) был: «1. только в остальной части Dockerfile».
Может ли кто-нибудь поправить меня, приведя пример, где второй (правильный) ответ мог бы быть полезен?
решение1
Во многих случаях вам необходимо выполнить код из определенного каталога. Возможно, приложение, которое вы запускаете, манипулирует файлами в текущем каталоге, возможно, приложение ожидает конфигурацию в текущем каталоге, возможно, приложение просто находится в текущем каталоге. WORKDIR
позволяет создателю образа настроить это так, чтобы людям, запускающим контейнер, не нужно было об этом беспокоиться.
Например; один из вариантов использования, который у меня был раньше, — это создание контейнера docker с приложением, которое манипулирует файлами в текущем каталоге. Без настройки WORKDIR
вам пришлось бы привязывать том к местоположению, а затем запускать cd /location
для каждой команды:
docker -v $PWD:/location someimage "cd /location; somecommand"
Установив WORKDIR
значение , /location
вы можете удалить cd
:
docker -v $PWD:/location someimage somecommand
Что гораздо удобнее.