docker图像-centos 7>;找不到ssh服务

docker图像-centos 7>;找不到ssh服务,docker,ssh,centos,Docker,Ssh,Centos,我在我的ubuntu机器上安装了docker image-centos 7。但是找不到ssh服务。所以我不能运行这项服务 [root@990e92224a82 /]# yum install openssh-server openssh-clients Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirror.dhakacom.com * extras: mirro

我在我的ubuntu机器上安装了docker image-centos 7。但是找不到ssh服务。所以我不能运行这项服务

[root@990e92224a82 /]# yum install openssh-server openssh-clients
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.dhakacom.com
 * extras: mirror.dhakacom.com
 * updates: mirror.dhakacom.com
Package openssh-server-6.6.1p1-31.el7.x86_64 already installed and latest version

Package openssh-clients-6.6.1p1-31.el7.x86_64 already installed and latest version
Nothing to do
[root@990e92224a82 /]# ss            
ssh          ssh-agent    ssh-keygen   sshd         ssltap       
ssh-add      ssh-copy-id  ssh-keyscan  sshd-keygen  

如何远程登录docker image?

您必须在Dockerfile上执行以下说明

RUN yum install -y sudo wget telnet openssh-server vim git ncurses-term
RUN useradd your_account

RUN mkdir -p /home/your_account/.ssh && chown -R your_account   /home/your_account/.ssh/ 

# Create known_hosts
RUN touch /home/your_account/.ssh/known_hosts


COPY files/authorized_keys /home/your_account/.ssh/
COPY files/config          /home/your_account/.ssh/
COPY files/pam.d/sshd      /etc/pam.d/sshd
RUN touch /home/your_account/.ssh/environment
RUN chown -R your_account /home/your_account/.ssh
RUN chmod 400 -R  /home/your_account/.ssh/*
RUN chmod 700 -R  /home/your_account/.ssh/known_hosts
RUN chmod 700  /home/your_account/.ssh/environment


# Enable sshd
COPY files/sshd_config /etc/ssh/
RUN ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa 

# Add a account into sudoers and this account doesn't need to type his password
COPY files/sudoers /etc/
COPY files/start.sh /root/
我必须删除文件/etc/pam.d/sshd上的“pam_nologin.so”,因为当我将openssh服务器的版本升级到openssh-server-6.6.1p1-31.el7时,pam_nologin.so将不允许任何用户远程登录,即使文件/etc/nologin不存在

start.sh

#!/bin/bash
/usr/sbin/sshd -E /tmp/sshd.log
启动centos容器

  • docker run-d-t-p$(sshPort):22--name$(containerName)$(imageName)/bin/bash
  • docker exec-d$(containerName)bash-c“sh/root/start.sh”
登录容器

  • ssh$(Docker ip)$(sshPort)

    • 您必须在Dockerfile上执行以下说明

      RUN yum install -y sudo wget telnet openssh-server vim git ncurses-term
      RUN useradd your_account
      
      RUN mkdir -p /home/your_account/.ssh && chown -R your_account   /home/your_account/.ssh/ 
      
      # Create known_hosts
      RUN touch /home/your_account/.ssh/known_hosts
      
      
      COPY files/authorized_keys /home/your_account/.ssh/
      COPY files/config          /home/your_account/.ssh/
      COPY files/pam.d/sshd      /etc/pam.d/sshd
      RUN touch /home/your_account/.ssh/environment
      RUN chown -R your_account /home/your_account/.ssh
      RUN chmod 400 -R  /home/your_account/.ssh/*
      RUN chmod 700 -R  /home/your_account/.ssh/known_hosts
      RUN chmod 700  /home/your_account/.ssh/environment
      
      
      # Enable sshd
      COPY files/sshd_config /etc/ssh/
      RUN ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa 
      
      # Add a account into sudoers and this account doesn't need to type his password
      COPY files/sudoers /etc/
      COPY files/start.sh /root/
      
      我必须删除文件/etc/pam.d/sshd上的“pam_nologin.so”,因为当我将openssh服务器的版本升级到openssh-server-6.6.1p1-31.el7时,pam_nologin.so将不允许任何用户远程登录,即使文件/etc/nologin不存在

      start.sh

      #!/bin/bash
      /usr/sbin/sshd -E /tmp/sshd.log
      
      启动centos容器

      • docker run-d-t-p$(sshPort):22--name$(containerName)$(imageName)/bin/bash
      • docker exec-d$(containerName)bash-c“sh/root/start.sh”
      登录容器

      • ssh$(Docker ip)$(sshPort)
      扩展到@puritys

      您可以在Dockerfile中执行此操作

      文件中的最后一个:

       ENTRYPOINT /usr/sbin/sshd -E /tmp/sshd.log && /bin/bash
      
      然后,您只需运行:

       docker run -d -p -t $(sshPort):22 --name $(containerName) $(imageName) /bin/bash
      
      扩展到@puritys

      您可以在Dockerfile中执行此操作

      文件中的最后一个:

       ENTRYPOINT /usr/sbin/sshd -E /tmp/sshd.log && /bin/bash
      
      然后,您只需运行:

       docker run -d -p -t $(sshPort):22 --name $(containerName) $(imageName) /bin/bash
      

      sshd
      在那里,但是为什么您需要ssh到您的容器?我知道sshd在那里。但是找不到任何与该服务相关的东西。我想远程登录docker容器以运行AnsibleGeneraly,尝试。如果您正在使用容器中的ansible执行某些操作,是否可以在映像构建期间执行?你可以通过sshd来完成吗?但是为什么你需要ssh到你的容器呢?我知道sshd在那里。但是找不到任何与该服务相关的东西。我想远程登录docker容器以运行AnsibleGeneraly,尝试。如果您正在使用容器中的ansible执行某些操作,是否可以在映像构建期间执行?你能通过吗?这里是什么文件?这里是什么文件?