2016-11-25 162 views
1

我有一个托管码头集装箱的Ubuntu机器。 和在码头集装箱中,我正在运行一个Web服务,该服务必须通过码头主机的/ etc/password验证用户的密码为 。在码头集装箱中安装ssh

我认为是从码头容器ssh码头主机。 因此,当我在码头容器中运行命令ssh它说ssh找不到。 所以,基本上ssh没有安装在容器中。 我如何在容器中安装ssh。 有什么办法可以完成这个场景吗?

回答

1

那么,作为图像文件的一部分,你只需要安装openssh-server:

sudo apt-get install openssh-server 

随后的问题是,传统上,正在运行的码头工人容器将只运行一个命令。你可以通过使用像supervisord这样的东西解决这个问题。这里有一个例子在泊坞窗文档: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"