• dokerfile命令


    来源:https://blog.csdn.net/weixin_33116629/article/details/113579283

    docker可以帮助我们快速部署安装需要的软件,比如mysql,nginx,elk等,都只需要简单的docker pull和docker run等简单命令即可,但是为了满足更多需求,一些个人应用的docker镜像,就需要用dockerfile来创建。

    一. Dockerfile入门
    Dockerfile的几个核心命令

    FROM

    镜像的运行环境,即基础镜像是谁

    MAINTAINER

    镜像的维护者信息

    RUN

    基础镜像需要执行哪些命令

    ADD

    添加文件到镜像中,会自动解压,以及下载网络URL

    COPY

    拷贝文件或目录到镜像,类似ADD,但不会解压与下载网络URL

    WORKDIR

    设置工作目录,即cd命令

    VOLUME

    设置挂载主机目录

    EXPOSE

    设置容器运行时开放的端口

    CMD

    启动容器需要的命令

    1. FROM
    指定构建的镜像的运行环境

    FROM centos:7
    2. MAINTAINER
    指定镜像的维护者与联系信息

    MAINTAINER AntzUhl
    3. RUN
    构建镜像时执行的命令,此处我们可以安装容器需要的工具

    直接添加命令

    RUN yum install wget
    参数拼接命令

    RUN ["yum", "install", "wget"]
    另外还可以执行其他需要的命令,比如clone库

    RUN git clone git@github.com:CasterWx/terraria-docker-server.git
    4. ADD
    拷贝文件或者目录到镜像中,会自动解压压缩包与下载网络URL到目标地址,可以拷贝要执行的jar或者软件包,之后再使用CMD启动

    格式:ADD

    ADD antzuhl.jar /optADD http://antzuhl.cn/download/antzuhl.jar /opt
    5. COPY
    类似于ADD,但是只是拷贝,不会有其他操作。

    COPY antzuhl.jar /opt
    6. WORKDIR
    为RUN,CMD,COPY,ADD等命令设置工作目录

    WORKDIR /opt
    7. VOLUME
    指定容器挂载点到宿主机的目录,类似于docker run时-v参数

    VOLUME ["/opt/antzuhl"]
    8. EXPOSE
    指定容器运行的服务端口

    EXPOSE 7777
    9. ENV
    配置容器内环境变量信息

    ENV MYSQL_ROOT_PASSWORD 123456ENV JAVA_HOME /usr/local/jdk1.8.0_45
    10. CMD
    启动容器时执行的命令,用于启动容器内的软件包等,同样支持使用数组参数

    CMD ["./opt/terraria/terra_script.sh","start"]CMD ./opt/terraria/terra_script.sh start
    11. ENTRYPOINT
    ENTRYPOINT与CMD命令类似,有多个ENTRYPOINT时,容器启动只会执行最后一个

    ENTRYPOINT /bin/bash -C '/start.sh'
    二. Dockerfile实战Spring Boot项目
    创建一个最基础的Spring boot项目,Dockerfile为我编写的镜像创建Dockerfile文件,apache-maven压缩包为准备的maven包,通过ADD命令添加到镜像内,sell为一个简单的Spring boot代码,端口8080。

     

    # 基础镜像,运行在一个拥有java的环境FROM williamyeh/java8:latest# 维护者信息MAINTAINER AntzUhl # 将maven包添加到镜像内ADD apache-maven-3.3.9-bin.tar.gz /usr/local/bin# 配置maven相关环境变量RUN export PATH=apache-maven-3.3.9/bin:$PATHRUN export PATH=/usr/local/bin/apache-maven-3.3.9/bin:$PATHRUN ln -s /usr/local/bin/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvnRUN ls -l /usr/local/binRUN echo $PATH# 开放端口8080EXPOSE 8080# 创建目录RUN mkdir /opt/sell# 把代码拷贝到创建的目录ADD sell/ /opt/sell# 设置运行环境WORKDIR /opt/sell# mvn打包RUN mvn clean install# 执行打包好的jar文件CMD java -jar target/sell.jar
    完成后使用docker build -t sell:test .开始创建镜像

    sell:test为镜像名称,.代表当前目录。

     

    现在就可以使用docker run来创建镜像,访问localhost:8080即可。

    三. Dockerfile实战创建泰拉瑞亚服务器
    此外,还可以使用dockerfile来帮助我们简化一些常用的部署操作,比如泰拉瑞亚服务器的部署

    # 基础镜像,centos7FROM centos:7MAINTAINER AntzUhl # 执行用户rootUSER root# 安装依赖RUN yum -y updateRUN yum -y install screen# 开放端口EXPOSE 7777RUN mkdir /opt/terraria/ADD terraria/ /opt/terraria/# 给执行脚本权限RUN chmod 775 /opt/terraria/terra_script.sh# 执行CMD ["./opt/terraria/terra_script.sh","start"]
    可参考我的一个泰拉脚本: https://github.com/CasterWx/terraria-docker-server

    使用docker build -t terraria:test .构建镜像即可。

  • 相关阅读:
    K3Cloud 解决方案版本号问题
    K3Cloud 通过元数据查询单据信息
    K3Cloud 设置分录的字段颜色
    K3Cloud 干预标准产品插件
    K3Cloud 根据单据ID 获取单据视图和数据包
    K3Cloud 后台修改账户密码策略
    K3Cloud 选择基础资料允许显示未审核数据
    K3Cloud 根据内码和基础资料元数据获取基础资料数据包
    按照应用场景划分安全测试
    常见业务场景的安全测试及安全开发
  • 原文地址:https://www.cnblogs.com/smartisn/p/16095815.html
Copyright © 2020-2023  润新知