使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等
一、首先制作一个centos6.8的裸机镜像
创建一个干净的目录:
[root@docker centos6.]# ls
c68-docker.tar.xz Dockerfile
Dockerfile文件内容:
#依赖的基础镜像
FROM scratch
#维护着
MAINTAINER hujianjie2010@.com
#添加的文件
ADD c68-docker.tar.xz /
#定义标签
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="2016-06-02" # Default command
CMD ["/bin/bash"]
docker build -t centos6.8:1.0 .
scratch是一个空的镜像,而解压c68-docker.tar.xz包里面包含了centos主要的目录:如下
bin dev home lib64 manage media opt root sbin srv tmp var
c68-docker.tar.xz etc lib lost+found mnt proc selinux sys usr
因此上面的build出来的镜像基本就是一个裸机镜像。
注:下面这段文字摘自网络。但是能够看清楚scratch是啥东西,也能理解最基础的镜像是从哪里开始
使用 tar 来创建一个完整的镜像
通常,你要先运行一个可工作的发行版的机器,来打包一个基础镜像。虽然有一些工具不是必需的,比如 Debian 的 Deboostrap,但是你还是可以用它来生成 Ubuntu 镜像。
下面的例子尽可能简单地创建一个 Ubuntu 基础镜像:
$ sudo debootstrap raring raring > /dev/null
$ sudo tar -C raring -c . | sudo docker import - raring
a29c15f1bf7a
$ sudo docker run raring cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
DISTRIB_DESCRIPTION="Ubuntu 13.04"
使用 scratch 创建简单的基础镜像
在 Docker 的注册中,有一个使用空的 tar 文件创建的特殊的版本库,叫 scratch :
tar -cv --files-from /dev/null | docker import - scratch
scratch是一个空镜像。你可以用 docker pull 把它拉取下来。然后你就可以基于它来做新的最小的容器了:
FROM scratch
COPY true-asm /true
CMD ["/true"]
上面的 Dockerfile 来自外部的一个最小镜像:tianon/true。
二、基于centos基础镜像的ssh远程登录镜像
镜像目录中存在的文件,不相关的文件不要放到镜像目录下,以免增加镜像的大小。
[root@docker tools_centos6.]# ls
authorized_keys ssh_host_dsa_key ssh_host_ecdsa_key.pub ssh_host_rsa_key
Dockerfile ssh_host_dsa_key.pub ssh_host_ed25519_key ssh_host_rsa_key.pub
run.sh ssh_host_ecdsa_key ssh_host_ed25519_key.pub
Dockerfile文件内容:
# Docker image of tools_centos6.
# VERSION 1.0
# Author: Hoojjack #基础镜像使用centos6.
FROM centos6.:1.0 #作者
MAINTAINER Hoojjack <hujianjie2010@.com> #定义工作目录
ENV WORK_PATH /usr/local
#安装基础软件
RUN yum install -y openssh-server telnet net-tool iptables-services vim wget #配置ssh 新建ssh需要的目录
RUN mkdir -p /var/run/sshd && mkdir -p /root/.ssh #取消pam登录限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd #解决ssh登录过程中验证私钥和公钥问题
COPY authorized_keys /root/.ssh/authorized_keys
COPY run.sh /run.sh
COPY ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
COPY ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
COPY ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key
COPY ssh_host_ed25519_key.pub /etc/ssh/ssh_host_ed25519_key.pub
COPY ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
COPY ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
COPY ssh_host_dsa_key /etc/ssh/ssh_host_dsa_key
COPY ssh_host_dsa_key.pub /etc/ssh/ssh_host_dsa_key.pub
RUN chmod /run.sh #暴露端口
EXPOSE #启动服务,默认开启ssh服务
CMD ["sh","/run.sh"]
docker build -t tyky/tools_centos:1.0 .
三、jdk1.8镜像
镜像目录文件:
[root@docker jdk8]# ls
Dockerfile jdk1.8
Dockerfile:
#配置基础镜像
FROM tyky/tools_centos:1.0
# 镜像维护着
MAINTAINER hujianjie2010@.com # 把java包添加到容器中,本地文件推荐COPY命令
COPY jdk1. /usr/local/jdk1./ # 配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin # 容器运行时监听的端口
EXPOSE
docker build -t tyky/jdk8:1.0 .
四、tomcat镜像。
目录:
[root@docker tomcat8]# ls
Dockerfile tomcat8
Dockerfile:
# 配置基础镜像
FROM tyky/jdk8:1.0
# 镜像维护着
MAINTAINER hujianjie2010@.com # 把tomcat包添加到容器中,本地文件推荐COPY命令
COPY tomcat8 /usr/local/tomcat8/ # 配置java与tomcat环境变量
ENV CATALINA_HOME /usr/local/tomcat8
ENV CATALINA_BASE /usr/local/tomcat8
ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 容器运行时监听的端口
EXPOSE
EXPOSE
# 设置容器启动
CMD ["/usr/local/tomcat8/bin/catalina.sh","run"]
docker build -t tyky/tomcat8:1.0 .
五、elasticsearch镜像
目录:
[root@docker elasticsearch]# ls
Dockerfile elasticsearch-1.4.2 go
Dockerfile:
# Docker image of elasticsearch 1.4.
# VERSION 0.0.
# Author: Hoojjack #基础镜像使用6.
FROM tools_centos6.:1.0 #作者
MAINTAINER Hoojjack <hujianjie2010@.com> #定义工作目录
ENV WORK_PATH /usr/local #把mongodb安装包从本地电脑复制到工作目录
COPY elasticsearch-1.4. $WORK_PATH/elasticsearch #安装go环境依赖的包
RUN yum install -y gettext-devel perl-CPAN perl-devel zlib-devel git
#安装go
COPY go $WORK_PATH/src/go
#RUN mkdir $WORK_PATH/src/go/work && chmod $WORK_PATH/src/go/work #配置go环境变量
ENV GOROOT $WORK_PATH/src/go
ENV GOPATH $WORK_PATH/src/go/work
ENV PATH=$GOROOT/bin:$PATH #安装go-mysql-elasticsearch
#RUN go get github.com/siddontang/go-mysql-elasticsearch #elasticsearch的web端口
EXPOSE
EXPOSE
因为elasticsearch需要同步mysql数据,用到了go-mysql-elasticsearch同步工具,该工具依赖go环境,所以在该镜像中安装了go
docker build -t tyky/elasticsearch:1.0 .
使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等的更多相关文章
- SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换
目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令 ...
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...
- ubuntu使用ssh远程登录服务器及上传本地文件到服务器
1. ubuntu 远程登录 首先你的ubuntu要能够支持ssh,如果不能,自行百度! 打开终端,输入 ssh root@115.159.200.13(你的服务器的IP地址) 回车就会让你输入 ...
- Dockerfile文件制作自己的镜像
1.创建空目录 $ cd /home/xm6f/dev $ mkdir myapp $ cd myapp/ 2.vim Dockerfile,内容如下: ## 一个基础的 python 运行环境 FR ...
- nodejs 版本dockerfile 文件制作,和常用命令
Dockerfile 如下 官方的node6.3的版本有点难下载,建议去网易蜂巢 https://c.163.com/hub pull hub.c.163.com/library/node:6.9 ...
- CentOS 7 服务器之间ssh无密码登录、传输文件
在Linux服务器之间使用ssh命令向另一个Linux服务器发送执行指令是需要输入密码 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一 ...
- k8s构建镜像-基于centos的python环境+pip
FROM centos:7.4.1708 #维护者信息MAINTAINER by icdss # 标签LABEL version="1.0" # 安装依赖RUN yum -y up ...
- 华为eNSP基础入门-配置SSH远程登录
eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...
- 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署
庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介 从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...
随机推荐
- 研究jenkins集成unittest成图
jenkins搭建完毕,unittest代码编写完毕,触发unittest执行测试的脚本和任务编写完毕,接下来研究生成的结果在页面的可视化. 方案: highcharts 参考资料: http://b ...
- mysql add foreign key 不成功
今天修改了mysql数据表的结构,然后添加外键index一直不成功: 查到问题在于,被外键的表,引擎不是Innodb,而是MyISAM. 修改好,以后保存报错: 解决办法,将数据库表里的数据全部删除, ...
- CentOS6.8手动安装MySQL5.6
众所周知,mysql5.7推出后有很多没有填好的坑,对于老的系统和项目兼容性也存在问题,所以现在普遍的web项目还是应该跑在centos6.8+mysql5.6的环境之下,今天主要说一下mysql5. ...
- [原]unity3d之http多线程异步资源下载
郑重声明:转载请注明出处 U_探索 本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来 ...
- [原] unity3d动态加载脚本
本文记录如何通过unity3d进行脚本资源打包加载 1.创建TestDll.cs文件 public class TestDll : MonoBehaviour { void Start () { ...
- 用XYNTService把Python程序变为服务
1. XYNTService的使用 1.1. 介绍 1.2. XYNTService 2. 用XYNTService把Python程序变为服务 1. XYNTService的使用 1.1. 介绍 通常 ...
- 【代码审计】iZhanCMS_v2.1 代码执行漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- [转]JAVA并发编程学习笔记之Unsafe类
1.通过Unsafe类可以分配内存,可以释放内存:类中提供的3个本地方法allocateMemory.reallocateMemory.freeMemory分别用于分配内存,扩充内存和释放内存,与C语 ...
- INSTALL_FAILED_USER_RESTRICTED
我这里出问的问题是在 清单文件中 <provider <mate_data 中少了 android:resource="@xml/filepaths" 加上就好 了
- Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server
改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "use ...