1.创建文件目录与文件

创建所需的目录sshd_ubuntu用于存放Dockerfile和相关文件。

$    mkdir sshd_ubuntu/
$   cd sshd_ubuntu/
$   touch Dockerfile sources.list

2.修改sources.list文件

修改sources.list文件以更换docker的镜像源。此处用户请自行修改对应源,作者基础镜像为ubuntu14.04。

deb http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty main restricted universe multiverse
#deb-src http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty main restricted universe multiversedeb http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-security main restricted universe multiverse
#deb-src http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-security main restricted universe multiversedeb http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-updates main restricted universe multiverse
#deb-src http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-updates main restricted universe multiverse#deb http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-backports main restricted universe multiverse
#deb-src http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-backports main restricted universe multiverse#deb http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-proposed main restricted universe multiverse
#deb-src http://linux.xidian.edu.cn/mirrors/ubuntu/ trusty-proposed main restricted universe multiverse

3.Dockerfile内容

#build ssh images
#
#VERSION        1.0FROM ubuntu:14.04
MAINTAINER NSS/Czh#更换国内源文件
COPY    ./sources.list /etc/apt/sources.list
RUN     apt-get update \&& echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d \&& DEBIAN_FRONTEND="noninteractive" apt-get install -y openssh-server \&& rm -rf /var/lib/apt/lists/*
#设置用于ssh连接的root密码
RUN     echo 'root:xidian'|chpasswd
RUN     mkdir -p /var/run/sshd
#允许root连接
RUN     sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_configEXPOSE  22
CMD     ["/usr/sbin/sshd", "-D"]

启动/停止ssh服务,可以将 /usr/sbin/policy-rc.d 文件中的返回值改为0。echo “#!/bin/sh\nexit 0” > /usr/sbin/policy-rc.d。参考文章docker报错:invoke-rc.d: policy-rc.d denied execution of start.

设置DEBIAN_FRONTEND环境变量为noninteractive后,会进行静默安装(非交互模式),非交互模式会选择默认的选项并以最快的速度完成构建。请确保只在Dockerfile中调用的RUN命令中设置了该选项,而不是使用ENV命令进行全局的设置。因为ENV命令在整个容器运行过程中都会生效,所以当你通过BASH和容器进行交互时,如果进行了全局设置那就会出问题。(此处不加DEBIAN_FRONTEND="noninteractive"也可正常运行,暂时不清楚原因),参考文章ubuntu DEBIAN_FRONTEND环境变量用法

4.创建镜像

$ docker build -t ubuntu/sshd:1.0 .
Step 1/9 : FROM ubuntu:14.04---> 2c5e00d77a67
Step 2/9 : MAINTAINER NSS/Czh---> Using cache---> 5097a7552add
Step 3/9 : COPY ./sources.list /etc/apt/sources.list---> Using cache---> 8312d88d1cd1
Step 4/9 : RUN  apt-get update  && echo "#!/bin/sh\nexit 0" > /usr/sbin/policy-rc.d    && DEBIAN_FRONTEND="noninteractive" apt-get install -y openssh-server    && rm -rf /var/lib/apt/lists/*---> Running in 6b7d56b01900
...篇幅问题过程略...
Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
Creating SSH2 ED25519 key; this may take some time ...* Starting OpenBSD Secure Shell server sshd...done.
Setting up python2.7 (2.7.6-8ubuntu0.5) ...
Setting up python-minimal (2.7.5-5ubuntu3) ...
Setting up python (2.7.5-5ubuntu3) ...
Setting up python-chardet (2.0.1-2build2) ...
Setting up python-six (1.5.2-1ubuntu1.1) ...
Setting up python-urllib3 (1.7.1-1ubuntu4.1) ...
Setting up python-requests (2.2.1-1ubuntu0.4) ...
Setting up tcpd (7.6.q-25) ...
Setting up ssh-import-id (3.21-0ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.15) ...
Processing triggers for ca-certificates (20170717~14.04.2) ...
Updating certificates in /etc/ssl/certs... 148 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
Processing triggers for ureadahead (0.100.0-16) ...
Removing intermediate container 6b7d56b01900---> 4aa044c39969
Step 5/9 : RUN  echo 'root:xidian'|chpasswd---> Running in 87f783382399
Removing intermediate container 87f783382399---> 4480a39550f4
Step 6/9 : RUN  mkdir -p /var/run/sshd---> Running in 48aad77ee015
Removing intermediate container 48aad77ee015---> cef0534f0337
Step 7/9 : RUN  sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config---> Running in de50ae4a8fad
Removing intermediate container de50ae4a8fad---> bca8c53762a1
Step 8/9 : EXPOSE   22---> Running in 5c6de8f317ad
Removing intermediate container 5c6de8f317ad---> 2ed7a44408af
Step 9/9 : CMD  ["/usr/sbin/sshd", "-D"]---> Running in 66b881fc6b1b
Removing intermediate container 66b881fc6b1b---> 365c22c94b4f
Successfully built 365c22c94b4f
Successfully tagged ubuntu/sshd:4.0

可以使用docker images命令看到当前创建

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/sshd         1.0                 365c22c94b4f        16 hours ago        230MB

5. 测试镜像,运行容器

我们运行一个镜像,启动一个命令,用docker ps -a查看所有容器

$ docker run -d -p 101:22 ubuntu/sshd:1.0
84bf42e0da86989ed9ccf857f1778d375f2216d337064aa3a8eed6048012cc4d
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                 NAMES
84bf42e0da86        ubuntu/sshd:1.0     "/usr/sbin/sshd -D"      8 seconds ago       Up 6 seconds                0.0.0.0:101->22/tcp   competent_babbage

此时容器已正常运行。
测试:
在另一台主机用ssh连接容器宿主机ip和端口号ssh root@ip -p port

ubuntu@ubuntu:~/.ssh$ ssh root@192.168.8.95 -p 101
The authenticity of host '[192.168.8.95]:101 ([192.168.8.95]:101)' can't be established.
ECDSA key fingerprint is SHA256:0wD3wI2oB4/20Qe3daLklQ1z+0UslHlV2t/ZDQNV/yw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.8.95]:101' (ECDSA) to the list of known hosts.
root@192.168.8.95's password:
Welcome to Ubuntu 14.04 LTS (GNU/Linux 4.4.0-146-generic x86_64)* Documentation:  https://help.ubuntu.com/The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.root@84bf42e0da86:~# 

测试成功,创建的ssh镜像可以正常使用。

用Dockerfile创建一个具有ssh服务的基础Ubuntu镜像相关推荐

  1. 「六」创建一个带 weblogic 服务的基础镜像

    Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...

  2. 「五」创建一个带 tomcat 服务的基础镜像(修订版)

    Tomcat Tomcat 简单介绍 Tomcat server是一个免费的开放源码的Web 应用server,属于轻量级应用server.在中小型系统和并发訪问用户不是非常多的场合下被普遍使用,是开 ...

  3. php生成占位图,Laravel4创建一个占位图片服务例子

    下面我来给大家转一个关于Laravel4创建一个占位图片服务例子,使用Composer安装intervention/image库,代码如下: composer require intervention ...

  4. 创建一个含有初始化数据库的mysql docker镜像

    创建一个含有初始化数据库的mysql docker镜像 一.准备一个用于数据库初始化的.sql文件 二.编写Dockerfile文件 三.编译Dockerfile文件 1.在Dockerfile所在目 ...

  5. 基于Dockerfile创建一个最简单的docker镜像

    试着创建一个docker image, 不在乎实用性和功能,只是对docker 创建image 有个大概的了解,所以有此文章. 文章目录 step1. 创建文件夹 step2. 进入文件夹 step3 ...

  6. linux ubuntu 开启ssh服务,开启SSH服务远程登录ubuntu

    Ubuntu系统(14.04 LTS) ssh–secure shell,提供安全的远程登录.从事嵌入式开发搭建linux开发环境中,ssh的服务的安装是其中必不可少的一步.ssh方便一个开发小组中人 ...

  7. 思达报表工具Style Report基础教程—创建一个多数据块的联合Union、镜像Mirro

    2019独角兽企业重金招聘Python工程师标准>>> 教程视频:http://v.youku.com/v_show/id_XOTAwNzcyMjY0.html 一.创建一个多数据块 ...

  8. 使用Dockerfile创建一个tomcat镜像

    docker已经看了有一段时间了,对镜像和容器也有了一个大致了解,制作一个tomcat镜像 1.首先下载linux环境的tomcat,并解压至tomcat目录 ls /tomcat apache-to ...

  9. dockerfile 创建自定义的tomcat服务

    2019独角兽企业重金招聘Python工程师标准>>> 使用docker自带的tomcat时区会有问题.一直都解决不了.最后自己创建tomcat镜像就对了. 创建文件Dockerfi ...

最新文章

  1. python数据分析设置_Python 数据分析系列之如何安装和设置 Python
  2. 基于OpenLayers+rbush实现高德轨迹样式
  3. Modules in Node
  4. java等号_java等号
  5. iOS中改变部分字体颜色
  6. div不能控制tr和td的隐藏
  7. php 两个数组 交集_两个数组的交集
  8. (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)
  9. 打开Android Studio报错“Error running ***: Please select Android SDK”
  10. java合同管理系统源码下载_合同管理系统 - 源码下载|行业应用软件|源代码 - 源码中国...
  11. 【EasyNetQ】- 发布
  12. habernet备份mysql_harbor 安装
  13. Java网络编程IO模型 --- BIO、NIO、AIO详解
  14. js 正则表达式去空格
  15. STEAM 教育相关书籍
  16. android分屏模式_Android分屏模式开发注意事项
  17. renqun_youhua=2004892,竞价推广链接后缀标识都是什么含义?
  18. Java中级开发笔试题及答案,最全指南
  19. 强化学习的10个现实应用
  20. C#必看:《第17章节QQ管理系统》

热门文章

  1. 3D小游戏(three)-Bottle跳跃动画实现
  2. 【毕业设计/课程设计】基于SSM的电影票预订系统设计与实现(源码+文章) Java | JSP | MVC | Web
  3. C++实现 L1-007 念数字 (10分)
  4. PHP.Feast,查看“FEast”的源代码
  5. 一夫老师谈如何快速学习淘宝美工?成为高级淘宝设计师学习路径分析
  6. 计算方法 | 如何证明向量的无穷范数是p范数
  7. 开机总显示SQL server服务器,sql server 2008启动服务是:提示请求失败或者服务无及时响应...
  8. oracle oaf界面个性化,个性化EBS标准OAF页面(EO,+SQL全版本).doc
  9. 把工资从400变成40000
  10. Telerik Kendo UI 那点事【2】中文化(汉化)