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


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

    创建一个干净的目录:

    1 [root@docker centos6.8]# ls
    2 c68-docker.tar.xz Dockerfile

    Dockerfile文件内容:

    #依赖的基础镜像
    FROM scratch
    #维护着
    MAINTAINER hujianjie2010@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 [root@docker 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 <hujianjie2010@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 [root@docker jdk8]# ls
    2 Dockerfile jdk1.8

    Dockerfile:

     1 #配置基础镜像
     2 FROM   tyky/tools_centos:1.0
     3 # 镜像维护着
     4 MAINTAINER  hujianjie2010@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 [root@docker tomcat8]# ls
    2 Dockerfile  tomcat8

    Dockerfile:

     1 # 配置基础镜像
     2 FROM    tyky/jdk8:1.0 
     3 # 镜像维护着
     4 MAINTAINER    hujianjie2010@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 [root@docker 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 <hujianjie2010@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 .

  • 相关阅读:
    python 序列化
    python 文件目录操作
    正则表达式 贪婪与非贪婪
    python StringIO&BytesIO
    正则表达式 1
    了解HTML表单之input元素的23种type类型
    JS数组reduce()方法详解及高级技巧
    react之组件的shouldcomponentUpdate使用&&Component与PureComponent
    react之setState面试题
    react之setState异步和同步问题
  • 原文地址:https://www.cnblogs.com/hoojjack/p/9005177.html
Copyright © 2020-2023  润新知