Потяните контейнер ssh-client через докеры

Я новичок в Docker и, возможно, ничего не понимаю.

У меня есть контейнер app и dockerfile .

Я хочу установить ssh-client в контейнер app . Я хочу иметь возможность запускать команду ssh для доступа к внешнему ip из контейнера app .

Самый простой способ, который я знаю, – добавить

RUN apk update && apk add openssh-client bash

к моему dockerfile , но я хотел бы использовать готовый образ, поэтому все мои контейнеры могли использовать один и тот же.

Можно ли это сделать?

Если вы просматриваете dockerhub, где находятся все общедоступные изображения, вы обнаружите, что все популярные изображения «ssh-client» просто строятся поверх альпийского и устанавливают openssh-client именно так, как вы его описали.

Таким образом, нет очевидной выгоды при использовании этих существующих изображений. Просто установите ssh-client через:

 RUN apk update && apk-install openssh-client 

Напишите Dockerfile ( https://docs.docker.com/engine/reference/builder/ ):

 FROM alpine:latest # install ssh-client and bash RUN apk --no-cache add openssh-client bash # example ssh usage to print version ENTRYPOINT ["ssh", "-V"] 

Создайте и запустите его с помощью: docker build -t ssh . && docker run -t ssh ssh docker build -t ssh . && docker run -t ssh ssh Или использовать Docker-Compose.

После сборки с помощью docker build вы можете повторно использовать изображение ssh Docker в своих других проектах в Dockerfiles.

 FROM ssh ... 

Использование Docker-Compose docker-compose.yml :

 version: '3' services: ssh: build: . image: ssh 

Вы можете добавить несколько сервисов в файл компоновки по своему усмотрению. Файл докеры из вышеприведенного файла использует Dockerfile сверху для создания вашего изображения докеры ssh. См. Ссылку на создание файла: https://docs.docker.com/compose/compose-file/