docker容器里安装ssh的具体步骤

04-11

docker安装ssh

通过命令行安装

1.pull ubuntu镜像

  docker pull ubuntu:latest

2.启动并进入bash

  docker run -it -d ubuntu:lastest /bin/bash  # 查看刚刚运行容器的id  docker ps  # 在容器中执行bash命令  docker exec -it id /bin/bash

3.安装openssh-server并启动

  apt-get update  apt-get install openssh-server  # 启动之前需手动创建/var/run/sshd,不然启动sshd的时候会报错  mkdir -p /var/run/sshd  # sshd以守护进程运行  /usr/sbin/sshd -D &  # 安装netstat,查看sshd是否监听22端口  apt-get install net-tools  netstat -apn | grep ssh

如果已经监听22端口,说明sshd服务启动成功

4.ssh登陆

  # 生成ssh key  ssh-keygen -t rsa  # 修改sshd-config允许root登陆  sed -i 's+PermitRootLogin prohibit-password+PermitRootLogin yes' /etc/ssh/sshd-config

修改完sshd-config之后需要重启sshd服务

  // 找到pid  ps -aux | grep ssh  kill -9 pid  /usr/sbin/sshd -D &

查看容器ip

  ifconfig

在主机上进行登陆

  ssh root@ip

就可以登录成功了,但是注意这里是docker容器的宿主机才能登陆成功,如果需要其他机器登陆,可以在启动docker的时候进行端口映射

  // 11122宿主机端口,22为容器端口  docker run -it -p 11122:22   // 在其他机器上可以使用以下命令登陆,假设宿主机ip为192.168.1.101  ssh -p 11122 [email protected]

5.保存容器

  // 把id为id的容器保存  docker commit id sshd:ubuntu  // 停止容器  docker stop id

通过dockerfile

  # 以最新的Ubuntu镜像为模板  FROM ubuntu:latest    // 将本目录下的sources.list作为容器的一个文件  ADD sources.list /root/sources.list  // 使用阿里Ubuntu源,更新快  RUN cp /root/sources.list /etc/apt/sources.list.d/aliyun.list    RUN apt-get update  RUN apt-get install -y openssh-server  RUN apt-get install -y net-tools  RUN apt-get install -y vim  RUN mkdir -p /var/run/sshd  RUN mkdir -p mkdir/root/.ssh/  // 修改root密码,便于远程登录  RUN echo root:123456 | chpasswd  // 将key生成在指定文件内  RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -P '' -N ''  // 配置ssh可以使用root登陆  RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config    // 开放22端口  EXPOSE 22    CMD /usr/sbin/sshd -D &

根据Dockerfile build镜像

  docker build -t nginx:ubuntu .