在docker容器中安装ssh

时间:2016-11-25 09:20:41

标签: unix docker dockerfile

我有一台托管Docker容器的ubuntu机器。     在docker容器中,我正在运行必须验证的Web服务     用户的密码与docker主机的/ etc / password。

我的观点是从docker容器ssh到docker主机。     所以当我在docker容器中运行命令ssh时,它的ssh未找到。     所以,基本上ssh没有安装在容器中。     我如何在容器中安装ssh。     有没有办法完成这种情况?。

1 个答案:

答案 0 :(得分:7)

好吧,作为图像文件的一部分,您只需安装openssh-server:

sudo apt-get install openssh-server

问题在于传统上,正在运行的docker容器只运行一个命令。你可以通过使用supervisord之类的东西解决这个问题。 docker文档中有一个示例:https://docs.docker.com/engine/admin/using_supervisord/

您的dockerfile可能如下所示:

FROM ubuntu:16.04
MAINTAINER examples@docker.com

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"