这个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 yes
replace文本PermitRootLogin without-password
,以允许root用户使用密码或不使用(例如使用公共密钥)login。
一个重要的一般说明: 如果你在你的Docker容器中运行SSHD,你做错了!
wget supervisor docker.io openssh-server
是apt-get
调用的参数。 这些是要安装的软件包的名称。
echo
与|
组合使用 将新密码发送到chpasswd
命令。
sed
用于更新configuration文件中的某些文本(这里允许无密码login)。 s/text/newText/
部分进行文本replace。