可以ssh连接的centos容器

参考:http://blog.csdn.net/mexel310/article/details/51705777

一. pull好镜像后,运行容器

1. docker run -d -it <imageID> /bin/bash

  • -i:表示以“交互模式”运行容器

  • -t:表示容器启动后会进入其命令行

这样就能启动一个一直停留在后台运行的Centos了。如果少了/bin/bash的话,Docker会生成一个Container但是马上就停止了,不会一直运行,即使有了-d参数。

2. 然后我们可以进入我们这个Centos

docker attach <ContainerID>

或者使用

docker exec -it <容器名或者ID> /bin/bash

二. 安装基本网络组件 

进入Centos后,发现竟然没有ifconfig和ssh

1. ifconfig的安装

yum search ifconfig     # 查看需要安装那个软件包

yum install net-tools.x86_64    #安装相关软件包
 
2. ssh的安装
yum install openssh-server openssh-clients
 
启动SSH
/usr/sbin/sshd -D    #这样启动会失败
 
解决方法   

手动执行/usr/sbin/sshd-keygen -A

再执行/usr/sbin/sshd成功。

 
 
 

三. 将端口映射到宿主机

Ctrl+P+Q    #退出,但不停止容器

docker stop <容器ID>    #回到Docker下面,停止容器

docker commit <容器ID> <NAME/VERSION>    #提交当前容器到镜像

docker run -itd -p 50001:22 <刚才提交的镜像ID>  /bin/bash    #启动新容器,并且进行端口映射

 
OK, 现在可以ssh工具访问宿主机的IP端口就可以访问到容器了,用户名和密码要用容器里面的。
我这里就是192.168.99.100:50001

 
 

四. 写成一个dockerfile的形式,如下

FROM centos              
MAINTAINER hong "1816635208@qq.com"      
RUN yum -y install openssh-server;yum clean all
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN /bin/echo 'root:123456'|chpasswd
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/locale
EXPOSE 22 #暴漏容器端口22
CMD /usr/sbin/sshd -D

生成镜像:docker build -t hong/centos:ssh .

创建容器:docker run -d -P --name ssh_test hong/centos:ssh   # -P表示随机分配宿主机端口号到容器的22端口

 
然后ssh连接就好了,主要用户名root,密码是123456
 
 
 
 
 
 

 docker搞一个tomcat

 
 

1. 把上面网页中的内容编写成dockerfile文件如下

FROM centos
ADD ./webapps /opt/tomcat/webapps/ #ADD命令只能用于dockfile所在文件夹的文件或目录
ADD ./apache-tomcat-7.0./ /opt/tomcat/ #下载tomcat和jdk到dockerfile所在文件夹
ADD ./jdk1..0_80/ /opt/jdk
ADD ./run.sh /root
RUN chmod +x /root/run.sh
EXPOSE

生成镜像:docker build -t tomcat_test1 .

2.生成容器:

1)命令行生成方式:docker run -d -p 58090:8080 --name my_tomcat tomcat_test1 /root/run.sh

2)docker-compose.yml 自动生成,命令为docker-compose up -d,如果修改了文件内容,重新生成的命令为docker-compose -d --build

tomcat:
build: .
#image: tomcat_test1 同时使用build和image可以自定义镜像名
ports:
- "48080:8080"
restart: always
container_name: tomcat2
command: /root/run.sh

其中run.sh的内容如下

#!/bin/bash

export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH sh /opt/tomcat/bin/catalina.sh run
如果想wget下载tomcat容器里面的文件,需要把文件放在webapps目录中的下级目录中,如下
如果想直接下载文件,可以把文件放在webapps的ROOT目录下,比如wget http://192.168.0.242:58080/1.txt
否则需要加上非ROOT目录的其他目录名,比如wget http://192.168.0.242:58080/w/2.txt
 
 
 
 
 
dockerfile相关文档
 
 

制作基于centos可以ssh连接的容器以及tomcat容器的更多相关文章

  1. maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包

    maven这些工具负责创建项目,然后maven负责打包好war包扔进tomcat容器,tomcat容器接受的只是jar包 2.tomcat不管你什么编译的,也不管你开发工具是什么.Tomcat只接受w ...

  2. 从0到有,虚拟机安装centos,然后ssh连接虚拟机

    安装centos 1.下载centos镜像 https://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-bin-DVD1.i ...

  3. Centos上SSH连接过慢原因

    最近发现机房里有些centos机器进行ssh登陆非常慢且会超时,经过查看发现时GSPI认证过慢问题造成: 使用 ssh -v 发现 debug1: SSH2_MSG_SERVICE_ACCEPT re ...

  4. 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等

    一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...

  5. 烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天在Ubuntu下使用SSH连接centos系统,发现连接很慢.建议一个连接大约需要30s.很是坑爹,如下: 后来查询相关资料,发现这个是Ubunt ...

  6. 001. 使用ssh连接不上centos 6.5的解决方法及其解决中文乱码

    1. 使用ssh连接不上centos 6.5的解决方法: 错误显示: Connecting to 192.168.1.106:22... Could not connect to '192.168.1 ...

  7. SSH连接不上CentOS 主机配置文件导致的原因的解决方法

    一.CentOS之SSH的安装与配置 SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定SSH 为建立在应用层和传输层基础上 ...

  8. [转]python3之paramiko模块(基于ssh连接进行远程登录服务器执行命令和上传下载文件的功能)

    转自:https://www.cnblogs.com/zhangxinqi/p/8372774.html 阅读目录 1.paramiko模块介绍 2.paramiko的使用方法 回到顶部 1.para ...

  9. ssh连接虚拟机centos

    ssh连接虚拟机centos 虚拟机下CentOS7开启SSH连接 注意:安装虚拟机的时候,网络一定选择桥接模式.

随机推荐

  1. 解剖Nginx·模块开发篇(3)ngx_http_hello_world_module 模块的基本函数实现

    还记得我们定义过一个结构体如下吗? typedef struct { ngx_str_t output_words; } ngx_http_hello_world_loc_conf_t; 它就是 He ...

  2. 关于fastjson的一些知识

    今天被问到了一些有关fastjson的知识,问了fastjson内部的实现机制,笔者只是用过fastjson这个包,还真没了解过它的机制等. 下去后搜索了一些有关fastjson的知识,希望能对自己和 ...

  3. STREAMING #5 题解 3.高位网络

    高维网络 [题目描述] 现在有一个 d 维的坐标网格,其中第 i 维坐标的范围是[0,a_i].在这个范围内建立一个有向图:我们把范围内的每个整点(每一维坐标均为整数的点)当做图上的顶点.设点 A(0 ...

  4. SSL技术白皮书

    首页产品技术操作系统ComwareV5安全和VPN SSL技术白皮书 下载 收藏 打印 推荐 摘自:http://www.h3c.com/cn/d_200812/622834_30003_0.htm# ...

  5. LWIP协议栈1

    STM32F4自带的MAC,而没有PHY纯模拟电路部分,没有把PHY做进STM32F4是因为会对芯片的功耗有影响,同时芯片的体积会增大等原因. MAC与PHY的通信接口是MII以及RMII方式. MD ...

  6. Perl 学习笔记-正则表达式基础篇

    1.Perl中的正则表达式 在Perl中叫做模式, 是一个匹配(或不匹配)某字符串的模板, 是一种小程序, 对于一个字符串, 要么匹配, 要么不匹配. 使用简易模式: 将模式写在一对正斜线(/)中即可 ...

  7. cookie与session组件

    会话跟跟踪技术 cookie介绍 Djanjo中操作Cookle Session Django中Session相关方法 Django中的Session配置 CBV中加装饰器 session中运用aja ...

  8. java IO之File基本操作

    public static void main(String[] args) { // TODO Auto-generated method stub //"G:\\JAVA\\test\\ ...

  9. lspci通过系统总线查看硬件设备信息

    lspci - 列出所有PCI设备 PCI 的科普: PCI(Peripheral Component Interconnect),是一种连接电子计算机主板和外部设备的总线标准. 常见的PCI卡包括网 ...

  10. zrender源码分析3--初始化Painter绘图模块

    接上次分析到初始化ZRender的源码,这次关注绘图模块Painter的初始化 入口1:new Painter(dom, this.storage); // zrender.js /** * ZRen ...