用Dockerfile创建一个具有ssh服务的基础Ubuntu镜像
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镜像相关推荐
- 「六」创建一个带 weblogic 服务的基础镜像
Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...
- 「五」创建一个带 tomcat 服务的基础镜像(修订版)
Tomcat Tomcat 简单介绍 Tomcat server是一个免费的开放源码的Web 应用server,属于轻量级应用server.在中小型系统和并发訪问用户不是非常多的场合下被普遍使用,是开 ...
- php生成占位图,Laravel4创建一个占位图片服务例子
下面我来给大家转一个关于Laravel4创建一个占位图片服务例子,使用Composer安装intervention/image库,代码如下: composer require intervention ...
- 创建一个含有初始化数据库的mysql docker镜像
创建一个含有初始化数据库的mysql docker镜像 一.准备一个用于数据库初始化的.sql文件 二.编写Dockerfile文件 三.编译Dockerfile文件 1.在Dockerfile所在目 ...
- 基于Dockerfile创建一个最简单的docker镜像
试着创建一个docker image, 不在乎实用性和功能,只是对docker 创建image 有个大概的了解,所以有此文章. 文章目录 step1. 创建文件夹 step2. 进入文件夹 step3 ...
- linux ubuntu 开启ssh服务,开启SSH服务远程登录ubuntu
Ubuntu系统(14.04 LTS) ssh–secure shell,提供安全的远程登录.从事嵌入式开发搭建linux开发环境中,ssh的服务的安装是其中必不可少的一步.ssh方便一个开发小组中人 ...
- 思达报表工具Style Report基础教程—创建一个多数据块的联合Union、镜像Mirro
2019独角兽企业重金招聘Python工程师标准>>> 教程视频:http://v.youku.com/v_show/id_XOTAwNzcyMjY0.html 一.创建一个多数据块 ...
- 使用Dockerfile创建一个tomcat镜像
docker已经看了有一段时间了,对镜像和容器也有了一个大致了解,制作一个tomcat镜像 1.首先下载linux环境的tomcat,并解压至tomcat目录 ls /tomcat apache-to ...
- dockerfile 创建自定义的tomcat服务
2019独角兽企业重金招聘Python工程师标准>>> 使用docker自带的tomcat时区会有问题.一直都解决不了.最后自己创建tomcat镜像就对了. 创建文件Dockerfi ...
最新文章
- python数据分析设置_Python 数据分析系列之如何安装和设置 Python
- 基于OpenLayers+rbush实现高德轨迹样式
- Modules in Node
- java等号_java等号
- iOS中改变部分字体颜色
- div不能控制tr和td的隐藏
- php 两个数组 交集_两个数组的交集
- (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)
- 打开Android Studio报错“Error running ***: Please select Android SDK”
- java合同管理系统源码下载_合同管理系统 - 源码下载|行业应用软件|源代码 - 源码中国...
- 【EasyNetQ】- 发布
- habernet备份mysql_harbor 安装
- Java网络编程IO模型 --- BIO、NIO、AIO详解
- js 正则表达式去空格
- STEAM 教育相关书籍
- android分屏模式_Android分屏模式开发注意事项
- renqun_youhua=2004892,竞价推广链接后缀标识都是什么含义?
- Java中级开发笔试题及答案,最全指南
- 强化学习的10个现实应用
- C#必看:《第17章节QQ管理系统》
热门文章
- 3D小游戏(three)-Bottle跳跃动画实现
- 【毕业设计/课程设计】基于SSM的电影票预订系统设计与实现(源码+文章) Java | JSP | MVC | Web
- C++实现 L1-007 念数字 (10分)
- PHP.Feast,查看“FEast”的源代码
- 一夫老师谈如何快速学习淘宝美工?成为高级淘宝设计师学习路径分析
- 计算方法 | 如何证明向量的无穷范数是p范数
- 开机总显示SQL server服务器,sql server 2008启动服务是:提示请求失败或者服务无及时响应...
- oracle oaf界面个性化,个性化EBS标准OAF页面(EO,+SQL全版本).doc
- 把工资从400变成40000
- Telerik Kendo UI 那点事【2】中文化(汉化)