使用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环境上,而且是 ...
随机推荐
- proto序列化
proto序列化和反序列化类 序列化是将我们的Protobuf类对象转换成字节数组的方法,网络底层我们从服务器获取到的是字节数组,反序列化是将字节转成proto类对象的方法 public class ...
- ITIL也玩“太极拳”
近期看到一篇老外写的发布管理的培训材料,其中把发布管理比喻成中国太极图中的“阴”,把变 更管理比喻成“阳”,觉得还挺有意思.之所以这么比喻是因为,他认为“发布”是被动的,接受的,有女性阴柔的一面:而“ ...
- Apache+php5
.下载回来的是解压文件,解压好放到要安装的位置.(我这里以D:\Acpache24为例) .打开Apache24\conf下httpd.conf 文件,用记事本打开即可. ()第37行ServerRo ...
- 理解linux 块, i节点
https://blog.csdn.net/zdf19/article/details/54424880 https://www.cnblogs.com/hnrainll/archive/2012/0 ...
- c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...
- iOS 解决UIScrollView布局问题(布局受statusBar和NavigationBar影响)
iOS APP中有一个非常好用的功能,那就是当我们在滚动一个UIScrollView滚动了很远很远的时候,假如我们想让UIScrollView回到顶部,我们绝大多数人的做法就是慢慢慢慢的滚动UIScr ...
- Python 文件学习笔记
程序1 在上一题的基础上扩展,用户可以随意输入要显示的行数. 如输入2:5表示打印第2行到第5行的内容: 输入:2表示打印从开头到第2行的内容: 输入4:表示打印从第4行到结尾的内容: 输入:表示打印 ...
- 利用函数来得到所有子节点号& 利用函数来取得最高级的节点号
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. ...
- HttpClient(四)-- 使用代理IP 和 超时设置
1.代理IP的用处: 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施.这时候,就可以使用代理IP,屏蔽一个就换一个IP. 2.代理IP分类: ...
- Zabbix的自定义键值和自动发现功能监控Oracle数据库的表空间
前面介绍了利用Orabbix监控了,参考zabbix通过Orabbix监控oracle数据库,这里我们原先的模板中进行了修改,使用自动发现功能实现监控tablespace的使用情况. 1. 在被监控的 ...