这个docker文件的解释?

我想了解这个docker文件

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的目的是什么。 那么回声是什么意思呢? 然后也是最后一条线。

 apt-get install -y unzip openjdk-7-jre-headless wget supervisor docker.io openssh-server 

使用Ubuntu软件包pipe理器安装一堆软件包(基本映像是Ubuntu Trusty 14.04)。

-y选项用于防止apt询问用户有关安装软件包及其依赖项的确认:安装只需进行即可,无需任何input。 这是为了避免挂起build立docker图像的过程。 安装软件包:

  • openssh-server:使容器可以作为ssh服务器,处理来自ssh客户端的请求
  • wget,解压缩:实用程序
  • java:最终这个容器被用来允许用户通过ssh访问它,也许这些用户需要java
  • pipe理员,docker.io:我没有看到它在Dockerfile本身的直接用法

然后

 echo 'root:wurstmeister' | chpasswd 

将用户root的密码更改为wurstmeister

 sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config 

用文件/etc/ssh/sshd_config PermitRootLogin yesreplace文本PermitRootLogin without-password ,以允许root用户使用密码或不使用(例如使用公共密钥)login。

一个重要的一般说明: 如果你在你的Docker容器中运行SSHD,你做错了!

wget supervisor docker.io openssh-serverapt-get调用的参数。 这些是要安装的软件包的名称。

echo|组合使用 将新密码发送到chpasswd命令。

sed用于更新configuration文件中的某些文本(这里允许无密码login)。 s/text/newText/部分进行文本replace。