怎么理解这个Dockerfile

https://c.163.com/hub#/m/repo...

它在最后启动了那个sshd服务 但是 在本机我用什么密码链接进去呢 ?

FROM hub.c.163.com/public/centos:7.2.1511
RUN yum clean all
RUN yum install -y yum-plugin-ovl || true
RUN yum install -y vim tar wget curl rsync bzip2 iptables tcpdump less telnet net-tools lsof sysstat cronie python-setuptools
RUN yum clean all
RUN easy_install supervisor
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 22
RUN mkdir -p /etc/supervisor/conf.d/
RUN /usr/bin/echo_supervisord_conf > /etc/supervisord.conf
RUN echo [include] >> /etc/supervisord.conf
RUN echo 'files = /etc/supervisor/conf.d/*.conf' >> /etc/supervisord.conf
COPY sshd.conf /etc/supervisor/conf.d/sshd.conf
CMD ["/usr/bin/supervisord"]

下面是前面centos:7.2.1511 的dockerfile文件

FROM scratch
MAINTAINER netease
ADD centos-7-docker.tar.xz /    

LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="20160701"    

ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
# 安装常用软件
RUN yum install -y openssh-server
# 初始化ssh登陆
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
RUN echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config    

RUN yum clean all

# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd    

EXPOSE 22    

CMD ["/usr/sbin/sshd", "-D"]
阅读 3k
2 个回答

docker port <容器名> 22 可以看到 22 映射到外面的端口,比如 2333

于是就可以直接 ssh username@<本机ip> -p 2333

首先,吐槽一下,这个Dockerfile写的真没什么值得学习的,一点不符合最佳实践,一行命令用一个RUN。。。
如果不用docker exec的方式登录的话,用ssh跟正常的centos没区别,自己建立公钥私钥就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题