Docker 学习之路 – 创建可以SSH访问的Docker镜像

/ 0评 / 0

两个方法,一个是commit大法,容易实现,洁癖患者不喜欢.另一个是Dockerfile,洁癖患者没压力.
先做一个SSH Key.

ssh-keygen -t rsa
#按回车选择默认的没有密码。此时,会在生成一个文件~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa.pub >authorized_keys

然后创建Dockerfile.

FROM debian:stretch
#安装SSH服务
RUN apt-get update && apt-get install -y openssh-server &&
    mkdir -p /var/run/sshd &&
    mkdir -p /root/.ssh &&
    echo "root:xxoo" | chpasswd &&
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
#添加认证文件和启动脚本
ADD authorized_keys /root/.ssh/authorized_keys
RUN echo "#!/bin/bash" > /root/run.sh &&
    echo "/usr/sbin/sshd -D" >> /root/run.sh &&
    chmod u+x /root/run.sh
#导出端口
EXPOSE 22
CMD ["/root/run.sh"]

突然多了好多语法有木有,简单说下.
CMD就是容器启动时候执行的操作.
ADD就是更高级的文件添加操作,比COPY要骚.
EXPOSE是暴露端口,默认什么端口都没出来.
好的,那么开始生成Image吧.

docker build -t deiban:v9_ssh1 .

用daemon方式启动,用P参数表示端口要映射出来.

docker run -ditP deiban:v9_ssh1

发现他用32782映射了里面的22端口.可以打开,也可以进来了.

是不是好像一个NAT VPS一样,分享给大家用呢.其实,每个Docker还有他们自己的内网IP,下节再想办法弄明白了.更多端口,可以指定,也可以不指定...最好还是通过图形界面,超好配置的.
之前我印象中,有一个叫层次的信息,好像说Docker有个最高容忍层次.这次总算被我在图形界面看到...

所以呢,命令还是合并合并下.
还有感慨下日渐消瘦的磁盘空间...

还有为什么要用国外服务器呢,因为很多文件国内下不来,耽误效率.
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注