У меня установлен 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
внутри самого контейнера, и он не будет виден в вашей локальной файловой системе. Если вы создали образ и пометили его как 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 ...
Большое спасибо! Ваше объяснение действительно помогло. Из любопытства, если бы я хотел создать файл локально в этой папке при запуске образа, как бы я это сделал? Или это вообще возможно изначально?
Пожалуйста! Это определенно возможно. Вы можете смонтировать каталог с вашего хост-компьютера в контейнер при его запуске, чтобы они использовали один или несколько каталогов. Например, добавление -v $PWD:/home
монтирует текущий каталог в /home
внутри контейнера (если вы работаете в системе macOS/linux): docker run -it -v $PWD:/home hello:latest /bin/bash
. Если вы запустите ls /home
, вы должны увидеть и изменить те же файлы, из которых вы запускали команду docker. Подробнее о томах Docker здесь.
Большое спасибо! Я чувствую себя глупо из-за того, что не понимаю, что вещи происходят ВНУТРИ контейнера и не влияют на вашу систему напрямую в этом смысле. Я только сегодня начал изучать докер, и это должно было быть очевидно, но я слишком много думал об этом и заставил себя думать, что что-то не так, потому что я не видел, чтобы появился файл. Ха-ха. Еще раз большое спасибо! О, и я запускаю оболочку WSL в Windows, так как я не хочу, чтобы Linux был моей основной операционной системой, и я читал, что докер имеет много проблем при запуске его исключительно из Windows.
Конечно, это совершенно понятно. Контейнеры сложны, и большинству людей это чуждое понятие, когда вы впервые о них узнаете (включая меня).
Этот Dockerfile создает
helloWorld.txt
внутри контейнера, а не на вашем локальном компьютере (или не виден непосредственно на хост-компьютере). Вы ищете внутри контейнера этот файл?