一、首先制作一个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. SmbException: 0xC000007F

      The error code 0xC000007F means: NT_STATUS_DISK_FULL There is not enough space on the disk. https: ...

  2. Tensorflow物体检测(Object Detection)API的使用

    Tensorflow在更新1.2版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(看这里),大大降低了吾等调包侠的开发难度,无论是fine-tuning还是该网络结构都方便了不少.这里 ...

  3. 关联Left Outer Join的第一条记录

    数据准备 CREATE TABLE person (person_id ), lastname )) / INSERT ALL INTO person (person_id, firstname, l ...

  4. libevent 入门教程:Echo Server based on libevent(转)

    下面假定已经学习过基本的socket编程(socket, bind, listen, accept, connect, recv, send, close),并且对异步/callback有基本的认识. ...

  5. WinForm中实现HotKey

    最近在写一个游戏辅助工具,来点Win变成的总结 主要用了RegisterHotKey:UnregisterHotKey:两个winAPI 以下代码来自stackoverflow新增了一个HotKeyM ...

  6. mongodb安装使用笔记

    mongodb安装使用 安装后配置环境变量 创建数据库文件夹并连接数据库,并执行mongod --dbpath c:\workname 打开新的cmd,执行mongo命令,管理数据库 show dbs ...

  7. ios开发之 -- stringByAddingPercentEscapesUsingEncoding方法被替换 iOS9.0

    最近在项目中,发现之前的一个方法已经不被建议使用了. 该方法名即题目中提到的: stringByAddingPercentEscapesUsingEncoding,这个方法是用来进行转码的,即将汉字转 ...

  8. Python 网络爬虫

    爬虫介绍 爬取图片 爬取文本 爬虫相关模块:re 爬虫相关模块:urllib 爬虫相关模块:urllib2 爬虫相关模块:cookielib 爬虫相关模块:requests 爬取需要登录的页面

  9. Android应用程序的结构

    1.src目录 存放该项目的源代码 2.gen目录 该目录文件是ADT自动生成的,并不需要认为地去修改 3.Android2.1 该目录存放的是该项目支持的JAR包,同时还包含项目打包时需要的META ...

  10. Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:41 to override.

    记录下来少走些坑吧 一:不管用 tools:replace="android:icon,android:theme" xmlns:tools="http://schema ...