docker容器里安装ssh的具体步骤
时间:2019-03-30
本文章向大家介绍docker容器里安装ssh的具体步骤,主要包括docker容器里安装ssh的具体步骤使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 root@192.168.1.101
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 .
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- es6 随性学习之 字符串 String
- MongoDB内核:副本集选举过程分析
- MongoDB内核:主从同步之源码剖析
- OpenGL ES 帧缓冲区位块传送
- OAuth 2.0 单元测试解决方案
- 「性能提升」扩展 Spring Cache 支持多级缓存
- 如何以源码形式运行Nacos Server
- Spring Boot 2.4 配置文件将加载机制大变化
- OpenGL ES 多目标渲染(MRT)
- R包:gtable包用于处理ggplot2图像
- Sight——杀手级提升Laravel开发速度的组件现在开源了!
- 面试官带你学Android——面试中Handler 这些必备知识点你都知道吗?
- leetcode哈希表之前K个高频元素
- Kali之U盘启动加密与持久化存储制作流程
- Gentoo发行版系统基础使用记录