学习了Docker

让“干净”的docker后台运行!

2016-07-24  本文已影响1854人  Traphix

有时候用docker调试程序,想通过telnet或者ssh连接容器,但即便敲了“docker run -d”,若容器很“干净”,即没有“持续性”工作在进行,依然会“秒退”,很烦人。

于是,就从网上查了查资料,结合自己的一点点小理解,总结出来一个办法,都在下面的dockerfile里。

该dockerfile创建了一个默认同时运行telnet和ssh服务的镜像。

FROM ubuntu:latest
MAINTAINER Traphix

RUN apt-get update; apt-get upgrade -y
RUN apt-get install -y openssh-server openbsd-inetd telnetd

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config 
RUN echo "telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd" >> /etc/inetd.conf 

RUN echo "root:root" | chpasswd

RUN useradd admin  
RUN echo "admin:admin" | chpasswd  
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers 

RUN mkdir /home/admin
RUN mkdir /var/run/sshd 

EXPOSE 22 23
ENTRYPOINT service openbsd-inetd start && /usr/sbin/sshd -D 

关键最后一行命令,先启动telnet server服务,再启动/usr/sbin/sshd并添加 -D 参数确保后台运行,这样基于此镜像建立的容器就不会“秒退”了!

当然,也可以吧telnet相关指令去掉,只运行ssh服务,如下:

FROM ubuntu:latest
MAINTAINER Traphix

RUN apt-get update; apt-get upgrade -y
RUN apt-get install -y openssh-server

RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config 

RUN echo "root:root" | chpasswd

RUN useradd admin  
RUN echo "admin:admin" | chpasswd  
RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers 

RUN mkdir /home/admin
RUN mkdir /var/run/sshd 

EXPOSE 22
ENTRYPOINT /usr/sbin/sshd -D    

P.S. 连接指令很简单

ssh admin@IP_address
上一篇下一篇

猜你喜欢

热点阅读