Docker linux - не может перейти в некоторые каталоги с помощью docker exec (ASP.NET Core) - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь понять, как файловая структура работает внутри контейнеров докеров, наряду с пониманием томов и монтирования.

Одна вещь, которая меня смущает, это то, что когда я docker exec -it <container id> /bin/bash в контейнере, я не могу cd в некоторые каталоги.

Например, если я запускаю cd logs, я ожидаю, что смогу запустить ls, чтобы получить список файлов журналов, но я получаю No such file or directory после команды cd logs.

Однако я могу запустить cd wwwroot и перемещаться.

На изображении терминала ниже вы можете увидеть результат ls после того, как я выполнил exec'd.

Я могу запустить cat logs\2019-07-04.log.json, например, чтобы распечатать содержимое файла на экране. Но я все еще не могу сделать cd logs.

enter image description here

Я пробовал также следующее:

enter image description here

Это похоже на то, что путь к файлу является «ключом», а не правильной структурой каталогов.

Таким образом, это, похоже, ограничено directories, в которое приложение записывает во время выполнения, в то время как файлы, загружаемые в сборку, имеют правильную файловую структуру.

Это специфично для .NET Core в контейнерах linux? Почему это так работает?

1 Ответ

1 голос
/ 05 июля 2019

Это потому, что нет папки с именем logs, вы создали файлы с именами logs\2019-07-04.log.json и logs\2019-07-05.log.json, чтобы исправить это:

Сначала создайте новую папку mkdir logs

Затем переместите файлы в папку mv logs\\2019* logs/

Двойной \\ потребуется для использования только одного \.Тогда вы должны быть в состоянии ls.

С уважением;)

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