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 .构建镜像即可。