dockerコンテナーをホストするUbuntuマシンがあります。とdockerコンテナーで、ユーザーのパスワードをdocker Hostの/ etc/passwordで検証する必要があるWebサービスを実行しています。
私の見解は、DockerコンテナーからDockerホストにSSHで接続することです。そのため、Dockerコンテナーでコマンドsshを実行すると、そのsshが見つかりません。そのため、基本的にsshはコンテナーにインストールされません。コンテナーにsshをインストールするにはどうすればよいですか?このシナリオを達成する方法はありますか?.
まあ、イメージファイルの一部として、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"