这个docker文件的解释?

joh*_*ohn 0 linux ubuntu docker dockerfile

我想了解这个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
Run Code Online (Sandbox Code Playgroud)

我理解大部分线路,但我不明白这些线条的含义是什么?

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
Run Code Online (Sandbox Code Playgroud)

谁能帮我理解?我不确定wget supervisor docker.io openssh-server那条线的目的是什么.那回声意味着什么呢?然后也是最后的sed线.

Vin*_*Pii 6

apt-get install -y unzip openjdk-7-jre-headless wget supervisor docker.io openssh-server
Run Code Online (Sandbox Code Playgroud)

使用ubuntu包管理器安装一堆包(基本映像是Ubuntu Trusty 14.04).

-y选项用于防止apt询问用户关于安装软件包及其依赖项的确认:安装只是进行而无需任何输入.这是为了避免挂起构建docker镜像的过程.安装包:

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

然后

echo 'root:wurstmeister' | chpasswd
Run Code Online (Sandbox Code Playgroud)

将用户root的密码更改为 wurstmeister

sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)

PermitRootLogin without-passwordPermitRootLogin yes文件替换文本/etc/ssh/sshd_config以允许root用户使用密码登录或不使用密码(例如,使用公钥).

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