Попытка запустить изображение Cloudera в Docker
Я пытаюсь запустить cloudera/clusterdock в изображении докера для университетского проекта. Это мой первый опыт использования докеров, и до сих пор я использовал инструкции на веб-сайте cloudera, которые немного разрежены.
Я успешно загрузил докер и изображение cloudera, и когда я запускаю команду docker-images
, я получаю следующее:
REPOSITORY TAG IMAGE ID CREATED SIZE
cloudera/clusterdock latest 9b4d4f1dda22 7 days ago 467.5 MB
Когда я пытаюсь запустить контейнер с этим изображением. Используя следующую команду
docker run cloudera/clusterdock:latest /bin/bash
Получаю следующее сообщение
File "/bin/bash", line 1
SyntaxError: Non-ASCII character '\x80' in file /bin/bash on line 2,
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Прочитав pep, упомянутый pep, я знаю, что мне нужно изменить кодировку в файле, но pep концентрируется на файлах python, и я не знаю, есть ли файл python, поэтому не знаю, где его найти, чтобы исправить. Кроме того, имея ограниченные знания, я невольно меняю файл bin/ bash, поскольку я знаю, что это может повлиять на вашу машину.
Любая помощь должна предполагать, что я мало знаю об этом, поскольку у меня мало опыта.
Ответы
Ответ 1
Если вы посмотрите Dockerfile для cloudera/clusterdock:latest
, вы можете увидеть:
ENTRYPOINT ["python"]
Итак, когда вы делаете docker run cloudera/clusterdock:latest /bin/bash
, вы в основном делаете python /bin/bash
внутри контейнера. Вы увидите ту же ошибку, если вы наберете ее в своем терминале, как правило:
$ python /bin/bash
File "/bin/bash", line 1
SyntaxError: Non-ASCII character '\xe0' in file /bin/bash on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Вероятно, вы хотели:
docker run -it --entrypoint=/bin/bash cloudera/clusterdock:latest
Посмотрите на clusterdock.sh, чтобы увидеть, как на самом деле должен быть запущен контейнер.
Ответ 2
Связанные документы (например, описание на странице "Докер-студия изображения" или наше сообщение в блоге) описывают, что clusterdock предназначен для запуска с помощью clusterpock.sh. Это необходимо, потому что структура управляет Docker на главной машине.