2014-09-28 107 views
0

所以我有這個Dockerfile:爲什麼SSH連接到碼頭集裝箱不工作?

FROM debian:squeeze 

MAINTAINER Name < email : > 

# Update the repository sources list 

RUN apt-get update 

# Install apache, PHP, and supplimentary programs. curl and lynx-cur are for debugging the container. 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install apache2 build-essential php5 mysql-server openssh-server libapache2-mod-php5 php5-mysql php5-gd php-pear php-apc php5-curl curl lynx-cur 

# Enable apache mods. 
RUN a2enmod php5 
RUN a2enmod rewrite 

# Manually set up the apache environment variables 
ENV APACHE_RUN_USER www-data 
ENV APACHE_RUN_GROUP www-data 
ENV APACHE_LOG_DIR /var/log/apache2 
ENV APACHE_LOCK_DIR /var/lock/apache2 
ENV APACHE_PID_FILE /var/run/apache2.pid 

EXPOSE 80 

# Copy site into place. 
ADD www /var/www/site 

# Update the default apache site with the config we created. 
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf 

# start mysqld and apache 

EXPOSE 3306 

RUN mkdir /var/run/sshd 
RUN echo 'root:123' | chpasswd 
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config 

EXPOSE 22 

CMD bash -c ' (mysqld &); /usr/sbin/apache2ctl -D FOREGROUND;/usr/sbin/sshd -D' 

它建立起來,沒有問題,MySQL和Apache的啓動,做工精細,但SSH將無法正常工作,我不知道爲什麼。 openssh-server已安裝。

我嘗試啓動它是這樣的:

#startup.sh file 
#/bin/bash 

sshd 

+

ADD ./startup.sh /opt/startup.sh 
ENTRYPOINT ["/opt/startup.sh"] 

和許多其他,我很堅持。

我在做什麼錯了?

+0

'docker logs '說什麼? – Rondo 2014-09-29 00:09:01

回答

2

你在前臺啓動apache,因此apachectl進程永遠不會把手交給啓動它的shell,因此/ usr/sbin/sshd -D永遠不會被調用(除非你殺死apache)。

下面的指令將在後臺啓動MySQL和Apache和隨後的sshd在前臺:

CMD bash -c ' (mysqld &); /usr/sbin/apache2ctl start;/usr/sbin/sshd -D' 

雖然這樣的CMD聲明是確定的測試中,我會建議使用一種不同的方法來運行多個進程在一個單一的容器搬運工:

0

替換下面的泊塢窗文件的代碼行,

RUN mkdir /var/run/sshd 
RUN echo 'root:123' | chpasswd 
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config 

使用這些代碼

RUN apt-get install -y openssh-server 
RUN echo 'root:password' |chpasswd 
RUN mkdir -p /var/run/sshd 

這對我的作品。

注意:使用ssh只是爲了調試目的,這根本不是一個好習慣。