Підключення до Docker контейнера по sFTP може бути корисним для розробників, які працюють з файлами всередині контейнера. Наприклад, якщо ви розробляєте веб-додаток і хочете завантажити файли на сервер, ви можете підключитися до контейнера по sFTP і завантажити файли на сервер з вашого середовища розробки.
Додатково, при підключенні до Docker контейнера по sFTP, можна використовувати різні функції sFTP для керування файлами.
Розгортання Docker контейнера по sFTP.
Для підключення до Docker контейнера по sFTP спочатку необхідно створити контейнер, який буде запущений на віддаленому сервері. Для цього можна використовувати команду docker run. Наприклад, для запуску контейнера з nginx на порту 2222 і встановлення OpenSSH можна використовувати наступні команди:
docker run -d -p 2222:22 --name nginx_latest nginx
docker exec -it nginx_latest apt-get update
docker exec -it nginx_latest apt-get install -y openssh-server
Ці команди створять новий контейнер, названий "nginx_latest", на основі образу Nginx і встановлять OpenSSH всередині контейнера.
Встановимо пароль для обраного користувача.
Встановіть пароль для root (або будь-якого іншого користувача, з яким ви хочете підключитися), виконавши команду:
docker exec -it nginx_latest passwd root
Введіть пароль двічі.
- Відредагуйте в контейнері файл /etc/ssh/sshd_config, замінивши PermitRootLogin without-password на PermitRootLogin yes. Щоб підключитися і відредагувати його, використовуйте наступну команду:
docker exec -it nginx_latest bash
Використовуйте улюблений редактор. Якщо його немає, встановіть його.
- Перезапустіть ssh-сервер, виконавши команду:
/etc/init.d/ssh restart
Підключення до Docker контейнера по IP за допомогою sFTP.
Для цього необхідно визначити IP-адресу контейнера і порт, на якому запущений SSH-сервер. Це можна зробити, використовуючи команду docker inspect. Наприклад, якщо контейнер запущений на порту 2222, можна використовувати наступну команду для отримання IP-адреси:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' nginx_latest
Ця команда поверне IP-адресу контейнера. Потім можна підключитися до контейнера по sFTP, використовуючи облікові дані користувача, встановлені всередині контейнера. Наприклад, за допомогою команди sftp:
sftp [email protected]
Де root- ім'я користувача, встановленого всередині контейнера, а ip-address - IP-адреса контейнера (172.17.0.4), отриманого за допомогою команди docker inspect.
Підключення за допомогою FileZilla.
-
У меню "Файл" виберіть "Керування сайтами" (або використовуйте гарячу клавішу "Ctrl+S").
- У вікні "Керування сайтами" натисніть кнопку "Новий сайт" і введіть ім'я вашого сайту.
- У полях "Хост", "Порт", "Ім'я користувача" і "Пароль" введіть відповідні значення, використовуючи інформацію з вашого Docker контейнера. За замовчуванням, ім'я користувача - "root", а порт - "2222".
- У випадаючому списку "Протокол" виберіть "SFTP - SSH File Transfer Protocol".
- Натисніть "Підключитися". Якщо всі налаштування вірні, ви повинні бути підключені до вашого Docker контейнера по sFTP через sFTP-клієнт.
Тепер ви зможете підключитися до Docker контейнера по sFTP, передавати файли і виконувати інші операції з файлами на віддаленому сервері.
Також пропонуємо розглянути інші корисні статті:
- Як скопіювати дані з хоста в Docker і з Docker на хост
- Список важливих команд для роботи з Docker-compose
- Як встановити Redis в Docker і Docker Compose