构建带有ssh服务的镜像
时间:2022-07-22
本文章向大家介绍构建带有ssh服务的镜像,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
背景
公司有一批机器是内网的机器,无法访问外网,但是内网之间都是可以互通的,我们需要在这几台机器上部署环境,所以优先考虑使用docker容器,在本地写好dockerfile,构建好镜像,然后把镜像load到目标机器上,所以我们需要先构建一层装有基础服务的镜像,然后在此基础上部署服务。
实现方法
ubuntu实现方法:
FROM ubuntu:16.04
MAINTAINER dogfei
RUN apt-get -y update
&& apt-get install -y openssh-server
&& mkdir /var/run/sshd
&& echo 'root:root' |chpasswd
&& sed -ri 's/^#?PermitRootLogins+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
&& sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
&& mkdir /root/.ssh
&& apt-get clean &&
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
centos实现方法:
FROM centos:latest
MAINTAINER dogfei
RUN rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
&& rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
&& yum install -y yum-priorities
&& yum install -y sudo
&& yum install -y net-tools openssh-clients openssh-server
# 将sshd的UsePAM参数设置成no,优化ssh连接
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 修改root用户密码,这里密码为:devilf
RUN echo "root:devilf"|chpasswd
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22 #监听22端口,外界可以访问
ENTRYPOINT ["/usr/sbin/sshd","-D"] #entrypoint表示默认情况下容器运行的命令
开始构建
docker build -t='ssh-server:v1' .
注:
当我们使用普通用户执行docker相关的命令时,我们可能需要加上sudo才能执行,非常麻烦,所以我们可以把当前的用户添加到docker组里
sudo usermod -aG docker dogfei
- 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 数组属性和方法
- 【剑指Offer】I. 从上到下打印二叉树
- C#还能这么玩?“诺基亚大屏独显计算器”来咯!
- 【剑指Offer】栈的压入、弹出序列
- 【剑指Offer】包含min函数的栈
- 【剑指Offer】顺时针打印矩阵
- 从0打造属于自己的windows开发命令终端
- hadoop数据类型及自定义
- 惊!u202a错误,百分之九十都不知道的隐藏在文件路径里的惊天秘密!(干货收藏)
- 百度站点收录 - 什么叫自动推送
- 虚拟机安装Centos后的一些配置
- CentOS下的JDK安装
- python 技术篇-3行代码搞定图像文字识别,pytesseract库实现
- hadoop2.6.0完全分布式手动安装
- Python 库安装问题:ModuleNotFoundError: No module named 'windows'. 解决方法
- Python各种文件删除函数的功能区分!