我正在尝试了解这个泊坞窗file
FROM ubuntu:trusty
MAINTAINER Wurstmeister
RUN apt-get update; apt-get install -y unzip openjdk-7-jre-headless wget supervisor docker.io openssh-server
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64/
RUN echo 'root:wurstmeister' | chpasswd
RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
我了解大部分内容,但我不明白这些下面的内容是什么意思?
apt-get install -y unzip openjdk-7-jre-headless wget supervisor docker.io openssh-server
echo 'root:wurstmeister' | chpasswd
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
任何人都可以帮助我理解吗?我不确定wget supervisor docker.io openssh-server
在该行中的目的是什么。那回声意味着什么呢?然后也是最后的sed线。
答案 0 :(得分:6)
apt-get install -y unzip openjdk-7-jre-headless wget supervisor docker.io openssh-server
使用ubuntu软件包管理器安装一堆软件包(基本映像是Ubuntu Trusty 14.04)。
-y
选项用于防止apt询问用户有关安装软件包及其依赖项的确认:安装只是进行而无需任何输入。这是为了避免挂起构建docker镜像的过程。已安装的软件包:
然后
echo 'root:wurstmeister' | chpasswd
将用户root的密码更改为wurstmeister
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
将文件PermitRootLogin without-password
替换为文件PermitRootLogin yes
中的/etc/ssh/sshd_config
,以允许root用户使用密码登录或不使用密码(例如,使用公钥)。
重要的一般性说明:If you run SSHD in your Docker containers, you're doing it wrong!
答案 1 :(得分:2)
wget supervisor docker.io openssh-server
是apt-get
来电的参数。这些是要安装的软件包的名称。
echo
与|
结合使用,可将新密码发送到chpasswd
命令。
sed
用于更新配置文件中的某些文本(此处允许无密码登录)。 s/text/newText/
部分会进行文字替换。