Запуск Docker на WSL не выполняет инструкцию «RUN» и не выполняет правильную сборку

У меня установлен Docker Desktop, и я следовал приведенному ниже руководству, чтобы настроить все для работы с WSL.

https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawless

Сначала при попытке создать образ я получил следующую ошибку. Команда: «docker build -t hello».

Что я исправил, поместив это в свою консоль:

export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0

Теперь я мог успешно собрать/запустить образ докера:

Я получаю «тест» на свою консоль, но проблема в том, что текстовый файл не создается. Так и должно быть, так как я получаю вывод и "кот" читает из файла, но он не появляется в папке, в которой я запускаю образ? Я тоже нигде не могу найти. Любой совет?

Этот Dockerfile создает helloWorld.txt внутри контейнера, а не на вашем локальном компьютере (или не виден непосредственно на хост-компьютере). Вы ищете внутри контейнера этот файл?

cam 14.12.2020 01:04
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
373
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш Dockerfile создает файл helloWorld.txt внутри самого контейнера, и он не будет виден в вашей локальной файловой системе. Если вы создали образ и пометили его как hello, вы можете установить оболочку в систему с помощью:

docker run -it hello:latest /bin/bash

Это даст вам оболочку bash на машине, где вы сможете просмотреть вывод:

$ docker run -it hello:latest /bin/bash
root@88a2b4c7d88e:/# ls
bin  boot  dev  etc  helloWorld.txt  home  ...

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

Azzi 14.12.2020 01:26

Пожалуйста! Это определенно возможно. Вы можете смонтировать каталог с вашего хост-компьютера в контейнер при его запуске, чтобы они использовали один или несколько каталогов. Например, добавление -v $PWD:/home монтирует текущий каталог в /home внутри контейнера (если вы работаете в системе macOS/linux): docker run -it -v $PWD:/home hello:latest /bin/bash. Если вы запустите ls /home, вы должны увидеть и изменить те же файлы, из которых вы запускали команду docker. Подробнее о томах Docker здесь.

cam 14.12.2020 01:38

Большое спасибо! Я чувствую себя глупо из-за того, что не понимаю, что вещи происходят ВНУТРИ контейнера и не влияют на вашу систему напрямую в этом смысле. Я только сегодня начал изучать докер, и это должно было быть очевидно, но я слишком много думал об этом и заставил себя думать, что что-то не так, потому что я не видел, чтобы появился файл. Ха-ха. Еще раз большое спасибо! О, и я запускаю оболочку WSL в Windows, так как я не хочу, чтобы Linux был моей основной операционной системой, и я читал, что докер имеет много проблем при запуске его исключительно из Windows.

Azzi 14.12.2020 01:50

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

cam 14.12.2020 01:58

Другие вопросы по теме