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

时间:2022-08-14 20:38:56

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