博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 生产SSH服务的镜像
阅读量:6706 次
发布时间:2019-06-25

本文共 2396 字,大约阅读时间需要 7 分钟。

  hot3.png

实战

ubuntu 安装 curl

Docker镜像为了精简容量,默认删除这些信息,安装的时候又下面两种方式:

  1. 使用 apt-get update 更新一次
  2. 编辑/etc/apt/sources.list文件,将默认软件源改为国内的源
apt-get updateapt-get install curl

创建支持SSH服务的镜像

基于commit 命令创建

docker commit CONTAINER [REPOSITORY[:TAG]]

1.启动ubuntu

docker run -it --name ssh ubuntu:14.04 /bin/bash

2.更新源(已更新的可忽略)

apt-get update

3.安装ssh

apt-get install openssh-server

如果速度慢可以改成国内源,具体源百度一下就有了,修改位置如下

vi /etc/apt/sources.list.d/163.list

4.启动ssh服务,需要/var/run/sshd存在,手动创建并启动服务

mkdir -p /var/run/sshd/usr/sbin/sshd -D &

5.查看22端口(ssh 服务默认监听端口),看是否正常启动

netstat -tunlp

6.修改服务的安全登录配置,取消pam登录限制

sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

7.当前这个容器 root 用户目录下建立.ssh目录,复制需要的公钥到 authorized_keys 文件

mkdir root/.sshvi /root/.ssh/authorized_keys

注意:authorized_keys文件的权限很特殊需要设置为600,才可以(具体原因后面补充)

chmod 600 authorized_keys

因为我是在虚拟机中创建的,所以我可以把虚拟机的公钥粘贴到authorized_keys文件中进行测试。

使用 ssh-keygen -t rsa 命令生成(dsa 不同的加密方式)

ssh-keygen -t dsacat /root/.ssh/id_rsa.pub//复制粘贴到启动容器的authorized_keys中

8.创建自动启动ssh服务的run.sh,并添加可执行权限

vi /run.shchmod +x run.sh

内容为:

#!/bin/bash/usr/sbin/sshd -D

9.退出容器

exit

10.保存镜像(上面容器运行的时候取名容器名为ssh)

//保存容器为镜像docker commit ssh sshd:ubuntu//查看镜像docker images

11.启动一个新容器,并添加端口映射10022-->22. 10022为宿主机端口,22是容器ssh服务监听端口端口

docker run -p 10022:22 -d sshd:ubuntu /run.sh//启动后查看运行情况docker ps

12.虚拟机中测试连接情况

ssh 192.168.1.200 -p 10022

进去后敲ls命令的时候需要使用 /bin/ls (暂时没找到这个解决 后面补充)

使用Dockerfile创建

1.创建一个sshd_ubuntu工作目录

mkdir sshd_ubuntu

2.创建Dockerfile 和 run.sh

cd sshd_ubuntutouch Dockerfile run.sh

3.编写run.sh脚本

#!/bin/bash/usr/sbin/sshd -D

4.编写authorized_keys文件

ssh-keygen -t rsa...cat ~/.ssh/id_rsa.pub > authorized_keys

5.编写Dockerfile文件

# 设置继承镜像FROM ubuntu:14.04# 提供一些作者信息MAINTAINER from www.dockerpool.com by waitfish# 下面开始运行命令RUN apt-get update# 安装ssh服务RUN apt-get install -y openssh-serverRUN mkdir -p /var/run/sshdRUN mkdir -p /root/.ssh# 取消pam限制RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd# 复制配置文件到相应位置,并赋予脚本可执行权限ADD authorized_keys /root/.ssh/authorized_keysADD run.sh /run.shRUN chmod 755 /run.sh# 开放端口EXPOSE 22# 设置自启动命令CMD ["/run.sh"]

6.创建镜像

在sshd_ubuntu目录下,使用docker build 命令来创建镜像,最后还需要加"."表示当前目录

docker build -t sshd:dockerfile .

7.运行容器

docker run -d -p 10022:22 sshd:dockerfiledocker ps

8.虚拟机中测试连接情况

ssh 192.168.1.200 -p 10022

在推出其他高效对容器维护之前,ssh服务还是比较重要的。比较适合生产环节。

转载于:https://my.oschina.net/solate/blog/866264

你可能感兴趣的文章
独家揭秘:微博深度学习平台如何支撑4亿用户愉快吃瓜?
查看>>
Visual Studio 15.7预览版4改进Git、C++支持
查看>>
全新云服务:亚马逊AWS发布AWS Ground Station\n
查看>>
微软宣布支持基于虚拟机的Azure IOT Edge服务
查看>>
来自社区的Visual Studio Code使用体验和教程
查看>>
高效运维最佳实践:如何做好On-call和事故响应?
查看>>
利用Scikit-Learn和Spark预测Airbnb的listing价格
查看>>
数据建模NoSQL数据库的概念和对象建模符号
查看>>
微软宣布Azure Function支持Python
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
ArchSummit深圳2016大会7折售票最后一周
查看>>
2019年React学习路线图
查看>>
Google Docs API正式可用,可自动化文档任务和内容管理
查看>>
全面了解大数据“三驾马车”的开源实现
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
人工智能白热化,运维脱帽“背锅侠”
查看>>
Android中使PopupWindow显示在指定控件的上下左右!
查看>>
html中ul标签的优化
查看>>
Kurento安装与入门05——One to many video call
查看>>
[deviceone开发]-cnodejs论坛移动端App
查看>>