Я хочу создать следующий поток инфраструктуры:
Как этого добиться с помощью Docker?
источник
Я хочу создать следующий поток инфраструктуры:
Как этого добиться с помощью Docker?
Во-первых, вам нужно установить SSH-сервер в образы, которые вы хотите использовать по ssh. Вы можете использовать базовый образ для всего вашего контейнера с установленным ssh-сервером. Затем вам нужно только запустить каждый контейнер, сопоставляющий порт ssh (по умолчанию 22) с портом хоста (удаленный сервер в вашем образе), используя -p <hostPort>:<containerPort>
. то есть:
docker run -p 52022:22 container1
docker run -p 53022:22 container2
Затем, если порты 52022 и 53022 хоста доступны извне, вы можете напрямую подключаться к контейнерам по ssh, используя IP-адрес хоста (удаленный сервер), указав порт в ssh с помощью -p <port>
. Т.е.:
ssh -p 52022 myuser@RemoteServer
-> SSH в контейнер1
ssh -p 53022 myuser@RemoteServer
-> SSH в контейнер2
Примечание : этот ответ продвигает инструмент, который я написал.
Выбранный здесь ответ предлагает установить SSH-сервер в каждый образ. Концептуально это неправильный подход ( https://docs.docker.com/articles/dockerfile_best-practices/ ).
Я создал контейнерный SSH-сервер, который можно «привязать» к любому работающему контейнеру. Таким образом, вы можете создавать композиции из любого контейнера. Единственное требование - в контейнере должен быть bash.
В следующем примере запускается SSH-сервер, доступный на порту 2222 локального компьютера.
Для получения дополнительных указателей и документации см .: https://github.com/jeroenpeeters/docker-ssh
источник
Эти файлы успешно откроют sshd и запустят службу, чтобы вы могли использовать ssh локально. (вы используете Cyberduck, не так ли?)
Dockerfile
supervisord.conf
для сборки / запуска демона запуска / перехода в оболочку.
источник
Я думаю, это возможно. Вам просто нужно установить SSH-сервер в каждый контейнер и открыть порт на хосте. Основное раздражение будет заключаться в сохранении / запоминании сопоставления порта с контейнером.
Однако я должен задаться вопросом, зачем вам это нужно. SSH'ng в контейнеры должен быть достаточно редким, чтобы не было проблем с ssh для хоста, а затем использовать docker exec для входа в контейнер.
источник
Создайте образ докера с
openssh-server
предустановленными:Dockerfile
Создайте образ, используя:
Запускаем
test_sshd
контейнер:Ssh в ваш контейнер:
Источник: https://docs.docker.com/engine/examples/running_ssh_service/#build-an-eg_sshd-image
источник
ssh root@localhost -p <ssh_host_port>
следовать инструкциям здесь