Docker学习之DockerFile

目录

初识DockerFile

docker build -f dockerfile文件路径 -t 镜像名称:[tag] .

DockerFile 介绍

 DockerFile构建过程

DockerFile指令:                        

​        创建一个自己的centos

CMD和ENTRYPOINT 区别

实战tomcat镜像


初识DockerFile

        dockerfile 就是用来构建docker镜像的构件文件!脚本命令,先体验一下!!!

        通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个命令一个命令,每一个命令就是一层

# 创建一个dockerfile文件,名字可以随机,建议dockerfile
# 文件中的内容
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end------"
CMD /bin/bash

这里每一个命令就是一层        

docker build -f dockerfile文件路径 -t 镜像名称:[tag] .

# 构建一个镜像,使用docker build -f dockerfile文件路径 -t 镜像名称:[tag] .
# -f dokcerfile 的文件目录
# -t 镜像名称:[tag]
# 注意 命令最后必须带一个.
[root@VM-4-3-centos opt]# docker build -f /opt/dockerfile -t ayit/centos:1.0 .

结果查看:

 测试了一下刚刚的文件是否同步出去!

这种方式我们使用的非常多,因为我们通常会构件自己的镜像!

假设构建镜像的时候没有挂载卷,要手动挂载卷 -v 卷名:容器内路径

DockerFile 介绍

        dockerfile 是用来构件docker 镜像的文件!命令参数脚本!

        构建步骤:

                1、编写一个dockerfile文件

                2、docker build 构建成为一个镜像

                3、docker run 运行镜像

                4、docker push 发布镜像(Docker Hub、阿里云仓库)

        我们先查看一下docker官网是怎么做的Docker Hub

        我们点击这个7.0

 DockerFile构建过程

        基础知识:

                1、每个保留关键字(指令)都必须是大写字母

                2、执行从上到下顺序执行

                3、# 标识注释

                4、每个指令都会创建提交一个新的镜像层,并提交

     

         Docker是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单

        Docker镜像逐渐成为企业交付的标准,必须要掌握

        步骤:开发,部署,运维!!! 缺一不可!!!!

        DockerFile:构建文件,定义了一切的步骤,源代码

        DockerImages:通过DockerFile构建生成的镜像,最终发布和运行产品

        Docker容器:容器就像是镜像运行起来提供服务

DockerFile指令:                        

FROM        # 基础的镜像层,一切从这里开始构建
MAINTAINER  # 镜像是谁写的,姓名<邮箱>
RUN         # 镜像构件的时候需要运行的命令
ADD         # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR     # 镜像的工作目录
VOLUME      # 挂载的目录
EXPOSE      # 保留端口的配置
CMD         # 指定容器启动时要指定的命令,最后一个会生效,可被替代
ENTRYPOINT  # 指定容器启动时要指定的命令,可以追加命令
ONBUILD     # 当一个构建被集成DockerFile,这个时候就会运行 ONBUILD 的指令,
              触发命令
COPY        # 类似ADD,将我们的文件拷贝到镜像中!
ENV         # 构件的时候设置环境变量

        创建一个自己的centos

# 1.编写DockerFile 的文件
[root@VM-4-3-centos dockerfile]# cat mydockerfile 
FROM centos
MAINTAINER ayit<www.ayit.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo --------end---------
CMD /bin/bash

# 2.通过这个文件构件镜像
[root@VM-4-3-centos dockerfile]# docker build -f mydockerfile -t mycentos:1.0 .
Successfully built f6b4e9e0f68e
Successfully tagged mycentos:1.0

CMD和ENTRYPOINT 区别

CMD         # 指定容器启动时要指定的命令,最后一个会生效,可被替代
ENTRYPOINT  # 指定容器启动时要指定的命令,可以追加命令

测试CMD

      

# 1.编写dockerfile 文件
[root@VM-4-3-centos dockerfile]# cat cmd-test 
FROM centos

CMD ["ls","-a"]

# 2.构建镜像
[root@VM-4-3-centos dockerfile]# docker build -f cmd-test -t cmd-test-centos:1.0 .

# 3.运行容器 ----直接追加
[root@VM-4-3-centos dockerfile]# docker run cmd-test:1.0 -l
docker: Error response from daemon: OCI runtime create failed:
starting container process caused: exec: "-l": executable file 
ERRO[0000] error waiting for container: context canceled 

# 3.运行容器 ----替换命令
[root@VM-4-3-centos dockerfile]# docker run cmd-test:1.0 ls -al
total 56
drwxr-xr-x   1 root root 4096 Sep 18 12:19 .
drwxr-xr-x   1 root root 4096 Sep 18 12:19 ..
-rwxr-xr-x   1 root root    0 Sep 18 12:19 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Sep 18 12:19 dev
drwxr-xr-x   1 root root 4096 Sep 18 12:19 etc

测试ENTRYPOINT

# 1.编写dockerfile 文件
[root@VM-4-3-centos dockerfile]# cat entrypoint-test 
FROM centos

ENTRYPOINT ["ls","-a"]

# 2.构建镜像
[root@VM-4-3-centos dockerfile]# docker build -f entrypoint-test -t cmd-entrypoint-centos:1.0 .

# 3.运行容器 ----直接追加
[root@VM-4-3-centos dockerfile]# docker run entrypoint-test:1.0 -l
total 56
drwxr-xr-x   1 root root 4096 Sep 18 12:20 .
drwxr-xr-x   1 root root 4096 Sep 18 12:20 ..
-rwxr-xr-x   1 root root    0 Sep 18 12:20 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Sep 18 12:20 dev
drwxr-xr-x   1 root root 4096 Sep 18 12:20 etc

DockerFile 中很多命令都十分的相似,我们需要了解它们的区别,我们最好的学习就是对比它们测试后的区别

实战tomcat镜像

        1、准备镜像文件,tomcat压缩包,jdk压缩包!(注意使用tar包)

        

        2、编写dockerfile文件,官方命名dockerfile,build会自动寻找这个文件,就不需要 -f 指定了

FROM centos
MAINTAINER nni<nni97@163.com>

ADD jdk-8u301-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.53.tar.gz /usr/local

ENV MYPATH /usr/local
WORKDIR $MYPATH
 
RUN yum -y install vim
RUN yum -y install net-tools

ENV JAVA_HOME=/usr/local/jdk1.8.0_301
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV CATALINA_HOME=/usr/local/apache-tomcat-9.0.53
ENV CATALINA_BASH=/usr/local//apache-tomcat-9.0.53
ENV PATH=/sbin:$JAVA_HOME/bin:$PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080

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

        3、通过docker build 来构建镜像

[root@VM-4-3-centos dockerfile]# docker run -d -p 8080:8080 -v /opt/tomcat/logs:/usr/local/apache-tomcat-9.0.53/logs -v /opt/tomcat/webapps:/usr/local/apache-tomcat-9.0.53/webapps/ --name tomcat01 tomcat-jdk
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪家李子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值