web-dev-qa-db-ja.com

DockerコンテナーへのSSHのインストール

dockerコンテナーをホストするUbuntuマシンがあります。とdockerコンテナーで、ユーザーのパスワードをdocker Hostの/ etc/passwordで検証する必要があるWebサービスを実行しています。

私の見解は、DockerコンテナーからDockerホストにSSHで接続することです。そのため、Dockerコンテナーでコマンドsshを実行すると、そのsshが見つかりません。そのため、基本的にsshはコンテナーにインストールされません。コンテナーにsshをインストールするにはどうすればよいですか?このシナリオを達成する方法はありますか?.

12
vishnubvrit

まあ、イメージファイルの一部として、openssh-serverをインストールする必要があります。

Sudo apt-get install openssh-server

その場合の問題は、伝統的に、実行中のDockerコンテナーが単一のコマンドしか実行しないことです。この問題を回避するには、supervisordなどを使用します。 docker docsに例があります: https://docs.docker.com/engine/admin/using_supervisord/

Dockerfileは次のようになります。

FROM ubuntu:16.04
MAINTAINER [email protected]

RUN apt-get update && apt-get install -y openssh-server Apache2 supervisor
RUN mkdir -p /var/lock/Apache2 /var/run/Apache2 /var/run/sshd /var/log/supervisor

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

EXPOSE 22 80
CMD ["/usr/bin/supervisord"]

Supervisord.confは次のようになります。

[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D

[program:Apache2]
command=/bin/bash -c "source /etc/Apache2/envvars && exec /usr/sbin/Apache2 -DFOREGROUND"
11
jaxxstorm