一、首先制作一个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镜像等等的更多相关文章

  1. SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换

    目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令 ...

  2. linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录

    最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令的使用321就能搞定,结果rsync命令要支持自动登 录还是要配置服务和参数,又不确定网上说的配置的行不行,因为都 ...

  3. ubuntu使用ssh远程登录服务器及上传本地文件到服务器

    1. ubuntu 远程登录   首先你的ubuntu要能够支持ssh,如果不能,自行百度! 打开终端,输入 ssh  root@115.159.200.13(你的服务器的IP地址) 回车就会让你输入 ...

  4. Dockerfile文件制作自己的镜像

    1.创建空目录 $ cd /home/xm6f/dev $ mkdir myapp $ cd myapp/ 2.vim Dockerfile,内容如下: ## 一个基础的 python 运行环境 FR ...

  5. nodejs 版本dockerfile 文件制作,和常用命令

    Dockerfile 如下 官方的node6.3的版本有点难下载,建议去网易蜂巢  https://c.163.com/hub pull hub.c.163.com/library/node:6.9 ...

  6. CentOS 7 服务器之间ssh无密码登录、传输文件

    在Linux服务器之间使用ssh命令向另一个Linux服务器发送执行指令是需要输入密码     ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一 ...

  7. k8s构建镜像-基于centos的python环境+pip

    FROM centos:7.4.1708 #维护者信息MAINTAINER by icdss # 标签LABEL version="1.0" # 安装依赖RUN yum -y up ...

  8. 华为eNSP基础入门-配置SSH远程登录

    eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...

  9. 庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署

    庐山真面目之八微服务架构 NetCore 基于 Dockerfile 文件部署 一.简介      从今天开始,不出意外的话,以后所写的文章中所介绍项目的部署环境都应该会迁移到Linux环境上,而且是 ...

随机推荐

  1. 安装MongoDB 到服务器

    用管理员身份运行CMD > cd C:\Program Files\mongodb\bin > C:\Program Files\mongodb\bin>mongod --dbpat ...

  2. 关于修改linux hostname的问题,尤其是redhat 7修改hostname的方式

    http://blog.csdn.net/the_conquer_zzy/article/details/68064149

  3. [scala] scala 函数 (⑦)

    1.scala 函数定义 2.scala 高阶函数 3.匿名函数 4.柯里化 import scala.math._ /** * @author xwolf * @date 2017-04-24 9: ...

  4. 抓包工具Wireshark

    https://baike.baidu.com/item/Wireshark/10876564?fr=aladdin

  5. 搭建项目Maven+springMVC+hibernate时,JUnit測试出现报ClassNotFoundException错误的解决

    近期在搭建Maven+springMVC+hibernate项目,正常启动项目时一切正常.但JUNIT測试时出现报ClassNotFoundException错误,经过细致排查发现没有生成class文 ...

  6. struts2 第一次使用 404 页面引发的一系列问题

    环境:ubuntu  . eclipse.struts-2.3.24 问题描写叙述: 1.  struts2 訪问出现404 2.  严重: Exception starting filter Str ...

  7. com.alibaba.fastjson.JSONObject

    package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastj ...

  8. iOS App Transprot Security

    随着iOS 9和OS X EI Capitan 的发布,苹果官方引入了应用通讯安全模式的概念.简而言之,应用通讯安全模式强制性要求应用需要使用最佳的安全通讯协议,比如TLS 1.2版本和前向保密技术. ...

  9. iOS NSError

    写在前面 在iOS开发中,NSError的使用非常常见,使用也比较简单,也正因为简单,所以对这一部分知识不甚注重.但是近期在做app底层网络封装时发现了一些问题.我使用的网络框架是AFNetworki ...

  10. hadoop的Map阶段的四大步骤

    深入理解map的几个阶段是怎样执行的.