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

Posted hoojjack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等相关的知识,希望对你有一定的参考价值。

一、首先制作一个centos6.8的裸机镜像

创建一个干净的目录:

1 [[email protected] centos6.8]# ls
2 c68-docker.tar.xz Dockerfile

Dockerfile文件内容:

#依赖的基础镜像
FROM scratch
#维护着
MAINTAINER [email protected]163.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主要的目录:如下

1 bin  dev  home  lib64  manage  media  opt   root   sbin     srv  tmp  var
2 c68-docker.tar.xz  etc  lib   lost+found   mnt    proc   selinux  sys  usr

因此上面的build出来的镜像基本就是一个裸机镜像。

注:下面这段文字摘自网络。但是能够看清楚scratch是啥东西,也能理解最基础的镜像是从哪里开始

使用 tar 来创建一个完整的镜像
通常,你要先运行一个可工作的发行版的机器,来打包一个基础镜像。虽然有一些工具不是必需的,比如 Debian 的 Deboostrap,但是你还是可以用它来生成 Ubuntu 镜像。

下面的例子尽可能简单地创建一个 Ubuntu 基础镜像:

1 $ sudo debootstrap raring raring > /dev/null
2 $ sudo tar -C raring -c . | sudo docker import - raring
3 a29c15f1bf7a
4 $ sudo docker run raring cat /etc/lsb-release
5 DISTRIB_ID=Ubuntu
6 DISTRIB_RELEASE=13.04
7 DISTRIB_CODENAME=raring
8 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远程登录镜像

镜像目录中存在的文件,不相关的文件不要放到镜像目录下,以免增加镜像的大小。

1 [[email protected] tools_centos6.8]# ls
2 authorized_keys  ssh_host_dsa_key      ssh_host_ecdsa_key.pub    ssh_host_rsa_key
3 Dockerfile       ssh_host_dsa_key.pub  ssh_host_ed25519_key      ssh_host_rsa_key.pub
4 run.sh           ssh_host_ecdsa_key    ssh_host_ed25519_key.pub

Dockerfile文件内容:

 1 # Docker image of tools_centos6.8
 2 # VERSION 1.0
 3 # Author: Hoojjack
 4 
 5 #基础镜像使用centos6.8
 6 FROM centos6.8:1.0
 7 
 8 #作者
 9 MAINTAINER Hoojjack <[email protected]163.com>
10 
11 #定义工作目录
12 ENV WORK_PATH /usr/local
13 #安装基础软件
14 RUN yum install -y openssh-server telnet net-tool iptables-services vim wget
15 
16 #配置ssh 新建ssh需要的目录
17 RUN mkdir -p /var/run/sshd && mkdir -p /root/.ssh
18 
19 #取消pam登录限制
20 RUN sed -ri s/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g /etc/pam.d/sshd
21 
22 #解决ssh登录过程中验证私钥和公钥问题
23 COPY authorized_keys /root/.ssh/authorized_keys
24 COPY run.sh /run.sh
25 COPY ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
26 COPY ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
27 COPY ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key
28 COPY ssh_host_ed25519_key.pub /etc/ssh/ssh_host_ed25519_key.pub
29 COPY ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
30 COPY ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
31 COPY ssh_host_dsa_key /etc/ssh/ssh_host_dsa_key
32 COPY ssh_host_dsa_key.pub /etc/ssh/ssh_host_dsa_key.pub
33 RUN chmod 755 /run.sh
34 
35 #暴露端口
36 EXPOSE 22
37 
38 #启动服务,默认开启ssh服务
39 CMD ["sh","/run.sh"]

docker build -t  tyky/tools_centos:1.0 .

三、jdk1.8镜像

镜像目录文件:

1 [[email protected] jdk8]# ls
2 Dockerfile jdk1.8

Dockerfile:

 1 #配置基础镜像
 2 FROM   tyky/tools_centos:1.0
 3 # 镜像维护着
 4 MAINTAINER  [email protected]163.com
 5 
 6 # 把java包添加到容器中,本地文件推荐COPY命令
 7 COPY jdk1.8  /usr/local/jdk1.8/
 8 
 9 # 配置java与tomcat环境变量
10 ENV JAVA_HOME /usr/local/jdk1.8
11 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
12 ENV PATH $PATH:$JAVA_HOME/bin
13 
14 # 容器运行时监听的端口
15 EXPOSE  8080

docker build -t  tyky/jdk8:1.0 .

四、tomcat镜像。

目录:

1 [[email protected] tomcat8]# ls
2 Dockerfile  tomcat8

Dockerfile:

 1 # 配置基础镜像
 2 FROM    tyky/jdk8:1.0 
 3 # 镜像维护着
 4 MAINTAINER    [email protected]163.com
 5 
 6 # 把tomcat包添加到容器中,本地文件推荐COPY命令
 7 COPY tomcat8  /usr/local/tomcat8/
 8 
 9 # 配置java与tomcat环境变量
10 ENV CATALINA_HOME /usr/local/tomcat8
11 ENV CATALINA_BASE /usr/local/tomcat8
12 ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin
13 
14 # 容器运行时监听的端口
15 EXPOSE  8080
16 EXPOSE  80
17 # 设置容器启动
18 CMD ["/usr/local/tomcat8/bin/catalina.sh","run"]

docker build -t  tyky/tomcat8:1.0 .

五、elasticsearch镜像

目录:

1 [[email protected] elasticsearch]# ls
2 Dockerfile  elasticsearch-1.4.2  go

Dockerfile:

 1 # Docker image of elasticsearch 1.4.2 
 2 # VERSION 0.0.1
 3 # Author: Hoojjack
 4 
 5 #基础镜像使用6.8
 6 FROM tools_centos6.8:1.0
 7 
 8 #作者
 9 MAINTAINER Hoojjack <[email protected]163.com>
10 
11 #定义工作目录
12 ENV WORK_PATH /usr/local
13 
14 #把mongodb安装包从本地电脑复制到工作目录
15 COPY elasticsearch-1.4.2  $WORK_PATH/elasticsearch
16 
17 #安装go环境依赖的包
18 RUN yum install -y gettext-devel perl-CPAN perl-devel zlib-devel git
19 #安装go
20 COPY go $WORK_PATH/src/go
21 #RUN mkdir $WORK_PATH/src/go/work && chmod 755 $WORK_PATH/src/go/work
22 
23 #配置go环境变量
24 ENV GOROOT $WORK_PATH/src/go
25 ENV GOPATH $WORK_PATH/src/go/work
26 ENV PATH=$GOROOT/bin:$PATH
27 
28 #安装go-mysql-elasticsearch
29 #RUN go get github.com/siddontang/go-mysql-elasticsearch
30 
31 #elasticsearch的web端口
32 EXPOSE 9200
33 EXPOSE 9300

因为elasticsearch需要同步mysql数据,用到了go-mysql-elasticsearch同步工具,该工具依赖go环境,所以在该镜像中安装了go

docker build -t  tyky/elasticsearch:1.0 .

 

以上是关于使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等的主要内容,如果未能解决你的问题,请参考以下文章

在个人笔记本上安装centos6.8

Docker 使用 Dockerfile 制作 Tomcat 镜像

dockerfile 制作镜像

Dockerfile介绍Docker制作jdk镜像

Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

系统是centos7.4,怎么制作centos 6.8基础镜像