首页 服务端 配置 正文

docker file

long 2020-08-21 14:33 docker 人气140

Dockerfile是用来构建Docker镜像的构建文件,是一系列命令和参数构成的脚本

步骤

1、编写Dockerfile

2、build

3、run


Dockerfile语法

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下,顺序执行

#表示注释

每条指令都会创建一个新的镜像层,并对镜像进行提交


执行流程

(1) docker从基础镜像运行一个容器

(2) 执行一案指令并对容器作出修改

(3) 执行类似docker commit的操作提交一个新的镜像层

(4) docker再基于刚提交的镜像运行一个新容器

(5) 执行dockerfile中的下一条指令直到所有指令都执行完成


保留字

FROM 基础镜像,当前新镜像是基于哪个镜像

MAINTAINER 镜像雏护者的姓名和邮箱地址

RUN 容器构建时需要运行的命令

EXPOSE  当前容器对外暴露出的端口

WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV 用来在构建镜像过程中设置环境变量

ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY 类似ADD,拷贝文件和目录到镜像中。将从构建上下文自录中<源路径>的文件!目录复制到新的一层的镜像内的<目标路径>位置

VOLUME 容器数据卷,保存数据,持久化

CMD 指定容器启动时要运行的命令,可以有多个CMD命令,但是只有最后一个生效,会被docker run 之后的参数替换

ENTRYPOINT 跟cmd类似,但是不会被docker run之后的参数替换,而是追加到后面执行。

ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发


例子,在centos里安装vim ifconfig。工作目录在tmp目录下。

FROM centos

MAINTAINER long<long275@126.com>

ENV MYPATH /tmp

WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH

CMD echo "success-----ok"

CMD /bin/bash


创建tomcat环境

FROM centos

MLAINTAINER long<long275@126.com>

#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下

COPY c.txt /usr/local/cincontainer.txt

#把javatomcat添加到容器中

ADD jdk-8u171-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-9.8.8.tar.gz/usr/local/

#安装vim编辑器

RUN yum-y install vim

#凌置工作访问时候的WORKDIR路径,登录落脚点

ENV MYPATH /usr/local

WORKDIR $MYPATH

#配置javatomcat环境变量

ENV JAVA_HOME /usr/local/jdk1.8.0_171

ENV CLASSPATH $JAVA_HOME /1ib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOMIE /usr/local/apache-tomcat-9.0.8

ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8

ENV PATH $PATH:$]AVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOMIE/bin

#容器运行时监听的端口

EXPOSE 8080

#启动时运行tomcat

#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh” ]

# CMD ["/usr/iocal/apache-tomcat-9.0.8/bin/catalina.sh", "run"]

CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F jusr/local/apache-tomcat-9.0.8/bin/logs/catalina.out


运行mysql容器

docker run -d -p 9880:8080 --name myt9 -v /zzyyuse/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.8/webapps/test -v /zzyyuse/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.8/logs --privileged=true zzyytomcat9


运行redis

docker run -p 6379:6379 -v /zzyyuse/myredis/data:/data -v /zzyyuse/myredis/conf/redis.conf/usr/lca/etc/redis/redis.conf -d redis:3.2 redis-server /usr/loca/etc/redis/redis.conf -appendonly yes


评论
  • 消灭零回复
公众号
小程序
网站统计
  • 文章总数:296
  • 总点击量:53739
  • 评论总数:27
  • 网站运行:543 天