这个docker文件的解释?

时间:2016-11-04 23:32:15

标签: linux ubuntu docker dockerfile

我正在尝试了解这个泊坞窗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线。

2 个答案:

答案 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镜像的过程。已安装的软件包:

  • openssh-server:这样容器可以充当ssh服务器并处理来自ssh客户端的请求
  • wget,unzip:utilities
  • java:最终这个容器用于允许用户通过ssh访问它,也许这些用户需要java
  • 主管,docker.io:我在Dockerfile本身看不到它的直接用法

然后

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-serverapt-get来电的参数。这些是要安装的软件包的名称。

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

sed用于更新配置文件中的某些文本(此处允许无密码登录)。 s/text/newText/部分会进行文字替换。