• 第五章 Docker 自定义镜像


    5-1 认识 Dockerfile 文件
    Dockerfile 用于构建 Docker 镜像,Dockerfile 文件是由一行行命令语句组 成 , 基于 这些命 令 即 可以构建一 个镜 像, 比如下面 就 是一 个
    Dockefile 文件样例:


    FROM XXX/jdk:8
    MAINTAINER docker_user
    ENV JAVA_HOME /usr/local/java
    ADD apache-tomcat-8.0.32.tar.gz /usr/local/
    RUN mv apache-tomcat-8.0.32 tomcat8
    EXPOSE 8080
    RUN chmod u+x /usr/local/tomcat8/bin/*.sh
    CMD /usr/local/tomcat8/bin/catalina.sh start

     
    5-2 Dockerfile 的基本结构
    一般的,Dockerfile 分为四部分:

    基础镜像信息;
    维护者信息;
    镜像操作指令;
    容器启动时执行指令;

    5-3 Dockerfile 指令
    FROM
    格式为 FROM 或 FROM :
    Dockerfile 文件的第一条指令必须为 FROM 指令。并且,如果在同一个 Dockerfile 中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次);
    MAINTAINER
    格式为 MAINTAINER ,指定维护者信息;
    ENV
    格式为 ENV ,指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;
    ADD
    格式为 ADD
    复制指定的到容器中的
    EXPOSE
    格式为 EXPOSE [...]

    告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容
    器时需要通过 -p 映射端口,Docker 主机会自动分配一个端口转发到
    指定的端口;

    RUN
    格式为 RUN
    RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行;
    CMD
    指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。
    如果指定了多条命令,只有最后一条会被执行。
    如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
    5-4 Dockerfile 自定义镜像
    5-4-1 自定义 JDK 镜像


    FROM centos:latest
    MAINTAINER wkcto
    ADD jdk-8u121-linux-x64.tar.gz /usr/local
    ENV JAVA_HOME /usr/local/jdk1.8.0_121
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    CMD java -version


    构建镜像:docker build -t wkcto_jdk1.8.0_121 .


    运行镜像:docker run -d ac84bde53958

     


    5-4-2 自定义 Tomcat 镜像
    定义 Dockerfile 文件:
    FROM wkcto_jdk1.8.0_121
    MAINTAINER wkcto
    ADD apache-tomcat-8.5.24.tar.gz /usr/local/
    ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.24
    ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    EXPOSE 8080CMD /usr/local/apache-tomcat-8.5.24/bin/catalina.sh run


    构建镜像:docker build -t wkcto-tomcat-8.5.24 .


    运行镜像:docker run -d -p 8080:8080 ab41b5f48256


    5-4-3 自定义 MySQL 镜像
    定义 Dockerfile 文件:

     
    FROM centos:centos6
    MAINTAINER wkcto
    RUN yum install mysql-server mysql -y
    RUN /etc/init.d/mysqld start &&\
    mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456' WITH
    GRANT OPTION ;"&&\
    mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456'
    WITH GRANT OPTION ;"&&\
    mysql -uroot -p123456 -e "show databases;"
    EXPOSE 3306
    CMD /usr/bin/mysqld_safe


    构建镜像:docker build -t wkcto-mysql .
    运行镜像:docker run -d -p 3306:3306 09ce279d92df

    5-4-4 自定义 Redis 镜像
    定义 Dockerfile 文件:

    FROM centos:latest
    MAINTAINER wkcto
    RUN yum install epel-release -y && yum install redis -y && yum install net-tools -y
    EXPOSE 6379
    CMD /usr/bin/redis-server –protected-mode no


    构建镜像:docker build -t wkcto-redis .
    运行镜像:docker run -d -p 6379:6379 390583cf0531
    5-5 镜像发布到仓库
    5-5-1 阿里云容器镜像仓库
    网址:https://dev.aliyun.com
    5-5-2 注册阿里云镜像仓库
    如果没有阿里云账号,需要注册一个阿里云账号;
    也可以使用淘宝账号、支付宝账号登录;
    5-5-3 发布镜像阿里云镜像仓库
    登录阿里云镜像,进入管理中心,在自己我管理中心中,左侧点击镜像仓库菜单,如果自己没有镜像仓库的话,需要创建一个镜像仓库;


    对自己的镜像仓库点击管理链接,按照操作指南进行操作即可;
    1. 登录阿里云 Docker Registry
    docker login --username=hi35331710@aliyun.com registry.cn-qingdao.aliyuncs.com
    用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
    您可以在产品控制台首页修改登录密码。

    2. 将镜像推送到 Registry
    docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/123test/1234test:[ 镜 像 版 本 号 ]
    docker push registry.cn-qingdao.aliyuncs.com/123test/1234test:[镜像版本号]
    请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
    imageId: a78da0202f84
    docker tag a78da0202f84 registry.cn-qingdao.aliyuncs.com/123test/1234test:latest
    docker push registry.cn-qingdao.aliyuncs.com/123test/1234test:latest

    5-5-4 Docker hub 镜像加速
    /etc/docker/daemon.json
    {"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]}

  • 相关阅读:
    记录keras库中导入函数找不到的问题
    liunx 安装达梦数据库
    亚像素源码
    [附源码]java毕业设计网易云音乐推荐系统
    LabVIEW学习记录2 - MySQL数据库连接与操作
    【无标题】
    Node.js环境搭建
    缓存失效方案
    云服务器windows service2022 部署git服务器
    【python】bin/dec/hex/bnr进制转换函数及fp32转十六进制
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/127782707