2019独角兽企业重金招聘Python工程师标准>>>

Docker安装ssh,supervisor等基础工具

需要提前下载好官方的ubuntu镜像,我这里使用的是ubuntu:14.04版本,这里安装了一些基础的工具ssh,curl,wget,vim等等,包括后续的Docker镜像需要启动多个服务,所以提前先装好supervisor。

Dockerfile文件

############################################
# version : birdben/tools:v1
# desc : 当前版本安装的ssh,wget,curl,supervisor
############################################
# 设置继承自ubuntu官方镜像
FROM ubuntu:14.04# 下面是一些创建者的基本信息
MAINTAINER birdben (191654006@163.com)# 注意这里要更改系统的时区设置,因为在 web 应用中经常会用到时区这个系统变量,默认的 ubuntu 会让你的应用程序发生不可思议的效果哦
ENV DEBIAN_FRONTEND noninteractive# 清空ubuntu更新包
RUN sudo rm -rf /var/lib/apt/lists/*# 一次性安装vim,wget,curl,ssh server等必备软件
# RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list
RUN sudo apt-get update
RUN sudo apt-get install -y vim wget curl openssh-server sudo
RUN sudo mkdir -p /var/run/sshd# 将sshd的UsePAM参数设置成no
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config# 添加测试用户admin,密码admin,并且将此用户添加到sudoers里
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers# 把admin用户的shell改成bash,否则SSH登录Ubuntu服务器,命令行不显示用户名和目录
RUN usermod -s /bin/bash admin# 安装supervisor工具
RUN sudo apt-get install -y supervisor
RUN sudo mkdir -p /var/log/supervisor# 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf# 容器需要开放SSH 22端口
EXPOSE 22# 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。
CMD ["/usr/bin/supervisord"]

Dockerfile源文件链接:

  • https://github.com/birdben/birdDocker/blob/master/tools/Dockerfile

supervisor配置文件内容

# 配置文件包含目录和进程
# 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。
# 第二段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令。[supervisord]
nodaemon=true[program:sshd]
command=/usr/sbin/sshd -D

supervisor源文件链接:

  • https://github.com/birdben/birdDocker/blob/master/tools/supervisord.conf

控制台终端

# 构建镜像
$ docker build -t="birdben/tools:v1" .
# 运行已经构件好的镜像,因为我使用的ubuntu虚拟机安装的Docker,而我的虚拟机也安装了ssh服务,所以这里指定了宿主机的端口为9999对应Docker容器的22端口
$ docker run -p 9999:22 -t -i "birdben/tools:v1"# 此时查看宿主机的9999端口,已经处于监听状态:
$ netstat -aunpt
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
tcp6       0      0 :::9999                 :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -   # 再查看一下宿主机的IP地址,我这里的IP地址是10.211.55.4
$ ifconfig# 此时可以通过ssh远程连接Docker容器了
$ ssh root@10.211.55.4 -p 9999
# 输入密码应该就可以连接到Docker容器了# 如果遇到下面的问题,这是Linux重装或则openssh-server重装引起的,执行以下命令即可
$ ssh-keygen -R 10.211.55.4# 如果上述方式不好用,进入此目录,删除的10.211.55.4相关rsa的信息即可
$ vi ~/.ssh/known_hosts@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
8c:4b:88:88:53:4a:b1:f0:e2:da:9a:dc:aa:67:46:df.
Please contact your system administrator.
Add correct host key in /Users/ben/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/ben/.ssh/known_hosts:18
RSA host key for [10.211.55.4]:9999 has changed and you have requested strict checking.
Host key verification failed.

遇到的问题和解决办法

Q:ssh登录后,命令行不显示用户名和目录
A:把用户的shell改成bash,否则SSH登录Ubuntu服务器,命令行不显示用户名和目录
RUN usermod -s /bin/bash admin参考:
http://bbs.csdn.net/topics/390188284Q:ssh创建admin登录用户,不使用root登录
A:这里使用ssh不建议直接使用root用户登录,建议创建一个新的用户例如admin登录
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers参考:
http://blog.csdn.net/kongxx/article/details/38395305
http://blog.csdn.net/kongxx/article/details/38412119Q:如何修改ssh服务相关配置
A:可以直接修改sshd_config配置文件
vi /etc/ssh/sshd_config
需要修改如下# 设置不允许root用户登录
PermitRootLogin yes# 利用 PAM 管理使用者认证有很多好处,可以记录与管理。
# 所以这里我们建议你使用 UsePAM 且 ChallengeResponseAuthentication 设定为 no,但是我们这里为了简单设置为密码认证,ChallengeResponseAuthentication设定为yes,UsePAM设置为no
ChallengeResponseAuthentication yes
UsePAM no参考:
http://my.oschina.net/fsmwhx/blog/143354
http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646032.html

转载于:https://my.oschina.net/u/1442577/blog/829549

Docker安装ssh,supervisor等基础工具相关推荐

  1. docker安装UnlockMusic(音乐格式转换工具 )

    docker安装UnlockMusic(音乐格式转换工具 ) Unlock Music 音乐解锁 由于DMCA Takedown,暂时移除仓库所有代码以及Commits 演示地址:https://de ...

  2. Davids实操笔记:docker安装使用小米SQL分析工具Soar

    文章目录 docker安装使用小米SQL分析工具Soar 背景 介绍 官网简介 功能特点 线路图 开始安装 使用Soar 访问SOAR-WEB SOAR配置 SQL分析 总结 docker安装使用小米 ...

  3. etcd 笔记(02)— etcd 安装(apt 或 yum 安装 、二进制包安装、Docker 安装 etcd、etcd 前端工具etcdkeeper)

    1. 使用 apt 或 yum 安装 etcd 命令如下: sudo apt-get install etcd 或者 sudo yum install etcd 这样安装的缺点是:安装的 etcd 版 ...

  4. docker安装redis连接redis可视化工具Redis Desktop Manager+springboot项目使用Cache缓存+springboot项目整合 Redis 实现缓存

    今天进一步学习了redis的相关知识,希望下面的博客可以给博友们带来帮助. docker安装redis连接Redis Desktop Manager 启动docker (系统控制ctl:control ...

  5. openwrt 软路由 docker安装青龙面板(基础版)

    置顶:无条件部署的小伙伴可以直接上车,名额有限,手动获取 JD  CK提交版 必要准备: 务必先下载好 京东.京喜.京东极速版三个app并开启以下活动(有些需要选择种植或者生产的物品自行选择即可,千万 ...

  6. rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令

    文章目录 一.RabbitMQ安装 1.1 二进制安装 1.2 rabbitmqctl工具 1.3 docker安装 二.rabbitmq基础命令 2.1 多租户与权限类 2.1.1 创建虚拟主机 2 ...

  7. 【Android 电量优化】电量优化 ( 耗电量测试 | Battery Historian 简介 | apt 源更新 | Docker 安装 | Battery Historian 安装 )

    文章目录 一.耗电量测试 二.Battery Historian 简介 三.Docker 简介 四.更新 apt 源 五.安装 Docker 六.安装 Battery Historian 七.访问电量 ...

  8. docker快速入门01——docker安装与简单应用

    1.docker简介 Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化 ...

  9. 【Linux】docker安装centos8启动SSH服务并跨局域网连接

    适用于基于Docker的人工智能开发平台,或者容器内不能使用service.systemctl的情况(不能以docker run方式启动容器) 1.前言 # 能够docker run启动容器的建议加一 ...

最新文章

  1. vbscript错误代码及对应解释大全[z]
  2. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)A ASCII Area
  3. 002-docker17.06安装
  4. XHTML 1.0 Tags 参考
  5. C语言再学习 -- 关键字void
  6. Verilog设计分频器(面试必看)
  7. 被讨厌的勇气--总结
  8. 广州a货翡翠,深圳a货翡翠
  9. 微软企业库mysql分页存储_使用微软企业库,非分页sql语句得到分页数据方法
  10. Python AES
  11. Android 去除最上面应用名称及图标
  12. 读《大道至简》第2章有感
  13. 每日英语:Electronics Develop A Sixth Sense
  14. VS2008开发Silverlight程序用到的插件
  15. Java面试题之:分布式缓存
  16. 八大数据结构及常见面试题
  17. html 星星字体,做华丽的星星文字效
  18. 从一个字符串删除元音字母
  19. 交换机与路由器技术:静态路由配置和路由器上配置DHCP、虚拟局域网VLAN
  20. Ubuntu下安装anydesk、realVNC实现远程

热门文章

  1. Eclipse和Tomcat绑定并且将上传资源到Tomcat上
  2. C语言 链表拼接 PTA,PTA实验 链表拼接 (20point(s))
  3. java项目 建文件夹_java创建文件夹
  4. mysql 学习笔记10 常用数学函数
  5. python 之 __new__ 方法理解
  6. mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常
  7. 【c】‘声明’和malloc不要重复开辟空间
  8. 将信号量代码生成静态库以及动态库
  9. 进入一个目录需要那些权限
  10. 107. 二叉树的层次遍历 II