civilvar 发表于 2019-2-20 12:46:25

Docker实战:基于centos7镜像创建ssh容器

  1、基于commit命令创建
  2、基于Dockerfile创建
  
  1、commit命令创建:
            commit命令,支持用户提交自己对容器的修改,从而生成一个新的镜像。
  

  # docker run -it centos /bin/bash//    首先创建一个容器
  

  # yum install -y openssh-server net-tools

  在容器上安装ssh服务,后面的一个包支持常用的网络命令,例如:netstat

  

   # echo "123123" | passwd --stdin root// 设置root密码
  

  生成三个rsa秘钥文件,到/etc/ssh/目录下:
  # ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  # ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

  

  如果不生成这三个加密直接运行ssh会报错,提示这三个文件不存在:
http://blog.运维网.com/static/js/ueditor1.4.3/themes/default/images/spacer.gifhttp://s1.运维网.com/images/20180930/1538307756756667.png
  /usr/sbin/sshd -D    //后台运行ssh服务
  http://s1.运维网.com/images/20180930/1538308235128681.png   

  

  编写ssh后台运行脚本:
  http://s1.运维网.com/images/20181001/1538376527736676.png

  

  # exit    //退出
  

  

  使用 commit 保存上一个带有ssh功能的容器,并重命名:
  # docker commit f39647 sshd:centos
sha256:edc12b3b70bdaeffd440b4a48c126c275da9576eaeead435ccab010c7795fb37
# docker images

  http://s1.运维网.com/images/20180930/1538308881530592.png
  

  使用端口映射在后台运行这个带有ssh功能的新容器:
  # docker run -d -p 10022:22 sshd:centos /run.sh或者 docker run -d -p 10022:22 sshd:centos /usr/sbin/sshd -D
  # ssh root@192.168.1.17 -p 10022
http://s1.运维网.com/images/20181001/1538376738840836.png

  http://s1.运维网.com/images/20181001/1538376806931693.png
  docker容器一般只运行一个服务,现阶段如果要远程维护docker容器,ssh开销小,是个不错的选择。

  Dockerfile创建:
  

  # cd /
# mkdir sshd_centos
# cd sshd_centos/
# touch Dockerfile run.sh
  

  # vim run.sh
# cat run.sh
#! /bin/bash
/usr/sbin/sshd -D
  # chmod +x run.sh

  

  # vim Dockerfile
# cat Dockerfile
FROM centos:latest
MAINTAINER ljys@910
RUN yum install -y openssh-server
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
  RUN echo "123123" | passwd --stdin root
ADD run.sh /run.sh
EXPOSE 22
CMD ["/run.sh"]

# docker build -t sshd:dockerfile .

  http://s1.运维网.com/images/20181001/1538379607981065.png
  

  使用ssh连接 sshd:dockerfile 容器:
      # ssh root@192.168.1.17 -p 10022
  http://s1.运维网.com/images/20181001/1538380859559909.png

  

  如果连接报错,使用一下解决方法:
  http://s1.运维网.com/images/20181001/1538380934427632.png

  

  # vim /root/.ssh/known_hosts
根据提示在一下文件中将指定的rsa报错验证删除,然后重新ssh连接!
  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: Docker实战:基于centos7镜像创建ssh容器