#docker
#docker
Вопрос:
Я хочу проверить, существует ли папка в моем вызываемом контейнере docker mysqlserver
. Контейнер представляет собой Linux-машину.
работает следующая команда:
# both commands print the current working directory
docker exec -it mysqlserver pwd
# output: /
docker exec -it mysqlserver 'pwd'
# output: /
итак, я предполагал, что я могу проверить существование папки, например:
docker exec -it mysqlserver test -d /var
# output: nothing
даже несуществующая папка ничего не выводит:
docker exec -it mysqlserver test -d /var
# output: nothing
Что мне нужно сделать, чтобы оценить, существует ли папка внутри контейнера?
Ответ №1:
test
Команда ничего не выводит. Он просто возвращает 0 (true), если тест прошел успешно, или 1 (false), если это не так.
Если вам требуется вывод, вам нужно будет выполнить вторую команду. Например
test -d /var/some/dir amp;amp; echo 'It Exists'
Чтобы сделать это в контейнере, вам нужно будет использовать оболочку:
docker exec -it mysqlserver sh -c "test -d /var/some/dir amp;amp; echo 'It Exists'"
Обратите пристальное внимание на кавычки.
Комментарии:
1.Для тех, кто хочет запустить это в сценарии оболочки на хост-компьютере и вывести «Оно существует» в командной строке хоста, запустите
amp;amp; echo 'It Exists'
после команды docker exec, напримерdocker exec -it mysqlserver sh -c "test -d /var/some/dir" amp;amp; echo 'It Exists'
Ответ №2:
test
не предоставляет выходных данных, которые вы должны проверить код выхода.
$ test -d /var
$ echo $?
0 -> Exists
$ test -d /hello_world
$ echo $?
1 -> Doesn't exist
Если вы хотите «исследовать» свой контейнер, откройте для него интерактивный сеанс.
docker exec -ti <container_name> sh