Як потрапити в оболонку докерного контейнера?
Починаю працювати з Docker. Використовую базовий образ WordPress та docker-compose.
Я намагаюся зайти по ssh в один з контейнерів, щоб перевірити файли/каталоги, які були створені під час початкової збірки. Я спробував запустити docker-compose run containername ls -la
, але це нічого не дало. Навіть якби це було зроблено, я б вважав за краще мати консоль, де я міг би переглянути структуру каталогів, а не запускати одну команду. Як правильно це зробити за допомогою Docker?
979
3
Команда
docker attach
дозволить вам підключитися до вашого контейнера Docker, але це не те ж саме, що і командаsh
. Якщо у вашому контейнері працює веб-сервер, наприклад,docker attach
, ймовірно, з'єднає вас з stdout процесу веб-сервера. Це не обов'язково дасть вам оболонку.Команда
docker exec
, ймовірно, є тим, що ви шукаєте; це дозволить вам виконувати довільні команди всередині існуючого контейнера. Наприклад:Звичайно, будь-яка команда, яку ви виконуєте, має існувати у файловій системі контейнера.
У наведеній вище команді `
є назвою або ідентифікатором цільового контейнера. Не має значення, чи використовуєте ви
docker composeчи ні; просто запустіть
docker ps` і використовуйте або ID (шістнадцятковий рядок, що відображається в першому стовпчику), або ім'я (відображається в останньому стовпчику). Наприклад, дано:Я можу бігти:
Я міг би досягти того ж самого, бігаючи:
Аналогічно, я міг би запустити снаряд у контейнері;
docker exec
однозначно буде рішенням. Простий спосіб працювати з питанням, яке ви задали, - це змонтувати каталог всередині Docker до каталогу локальної системи.Так ви зможете миттєво переглядати зміни в локальному шляху.
Інший варіант - скористатися nsenter.