使用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镜像等等的主要内容,如果未能解决你的问题,请参考以下文章
Docker 使用 Dockerfile 制作 Tomcat 镜像