码迷,mamicode.com
首页 > 其他好文 > 详细

Dockerfile

时间:2021-01-18 10:44:11      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:apach   --   image   没有   env   命令   软件   sde   cmd   

DockerFile

DockerFile介绍

DockeFile使用来构建docker镜像文件!命令参数脚本

构建步骤

  1. 编写一个dockerfile文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像(DockerHub, 阿里云镜像)

查看官方是怎么做
技术图片
技术图片

很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像

DockerFile构建过程

DockerFile基础知识

  1. 每个保留关键字(指令)都是必须是大写字母
  2. 指令是从上到下顺序执行的
  3. # 比哦啊哈斯注释
  4. 每个指令都会创建提交一个新的镜像层,并提交

技术图片

Dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件

DockerFile:构建文件,定义了一切的步骤,元代码
DockerImages:通过DockerFile构建生成的镜像最终发布和运行的产品
Docker容器:容器就是镜像运行起来提供服务的

DockerFile指令

  1. FROM:基础镜像,一切从这里开始构建
  2. MAINTAINER:镜像的作者,一般是姓名+邮箱
  3. RUN:镜像构建的时候需要运行的命令
  4. ADD:步骤,搭建Tomcat镜像,这个Tomcat压缩包!,添加内容
  5. WORKDIR:镜像的工作目录
  6. VOLUME:挂载的目录
  7. EXPOSE:指定对外端口
  8. CMD:指定这个容器启动时候要运行的命令,只有最后一个生效,可被替代
  9. ENTRTPOINT:指定这个容器启动的时候需要运行的命令,可以追加命令
  10. ONBUILD:当构建一个被继承 DockerFile 这个时候就会运行ONBUILD 的指令。触发指令
  11. COPY:类似ADD,将我们文件拷贝到镜像中
  12. ENV:构建的时候设置环境变量

技术图片

实战测试

Docker Hub 中99%镜像都是从这个基础镜像过来的 FROM scratch, 然后配置需要的软件和配置来进行的构建

技术图片

创建一个自己的Centos

  1. 编写DockerFile文件
    技术图片

  2. 通过 docker build 构建镜像
    技术图片

命令格式:docker build -f dockerfile文件 -t 目标镜像名:版本号 .

  1. 启动 docker 容器
    技术图片

可以发现增加的VIM,net-tools都可以使用
还可以通过docker history 镜像id 查看镜像是怎么生成的

CMD 和 ENTRYPOINT 的区别

测试CMD

# 编写 dockerfile 文件
FROM centos
CMD ["ls", "-a"]

# 构建镜像
 sudo docker build -f dockerfile-cmd-test -t mycentos:0.2 .

# run运行,发现 ls -a生效了,但是只有最后一个CMD生效
sudo docker run mycentos:0.2

测试 ENTRYPOINT

# 编写 dockerfile 文件
FROM centos
ENTRYPOINT ["ls", "-a"]

# 构建镜像
 sudo docker build -f dockerfile-cmd-test -t mycentos:0.2 .

# run运行,发现 ls -a生效了,但是只有最后一个CMD生效
sudo docker run mycentos:0.2

# 区别,我们追加的命令,直接添加到ENTRYPOINT命令后面
ubuntu@VM-0-13-ubuntu:/home/dockerfile$ sudo docker run mycentos:0.3 -l
total 56
drwxr-xr-x   1 root root 4096 Jan  9 07:22 .
drwxr-xr-x   1 root root 4096 Jan  9 07:22 ..
-rwxr-xr-x   1 root root    0 Jan  9 07:22 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3 15:22 bin -> usr/bin
drwxr-xr-x   5 root root  340 Jan  9 07:22 dev
drwxr-xr-x   1 root root 4096 Jan  9 07:22 etc
drwxr-xr-x   2 root root 4096 Nov  3 15:22 home
lrwxrwxrwx   1 root root    7 Nov  3 15:22 lib -> usr/lib
lrwxrwxrwx   1 root root    9 Nov  3 15:22 lib64 -> usr/lib64
drwx------   2 root root 4096 Dec  4 17:37 lost+found
drwxr-xr-x   2 root root 4096 Nov  3 15:22 media
drwxr-xr-x   2 root root 4096 Nov  3 15:22 mnt
drwxr-xr-x   2 root root 4096 Nov  3 15:22 opt
dr-xr-xr-x 113 root root    0 Jan  9 07:22 proc
dr-xr-x---   2 root root 4096 Dec  4 17:37 root
drwxr-xr-x  11 root root 4096 Dec  4 17:37 run
lrwxrwxrwx   1 root root    8 Nov  3 15:22 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3 15:22 srv
dr-xr-xr-x  13 root root    0 Jan  8 12:29 sys
drwxrwxrwt   7 root root 4096 Dec  4 17:37 tmp
drwxr-xr-x  12 root root 4096 Dec  4 17:37 usr
drwxr-xr-x  20 root root 4096 Dec  4 17:37 var


实战Tomcat

  1. 准备镜像文件Tomcat压缩包,jdk的压缩包

  2. 编写dockerfile文件,官方命名Dockerfilebuild命令会自动寻找Dockerfile文件,就不需要-f指定了

FROM centos
MAINTAINER lxl<3419066024@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u162-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.41.tar.gz /usr/local

RUN  yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_162
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.41
ENV CATALINA_BASH $CATALINA_HOME
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

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

  1. 构建镜像
sudo docker build -t diytomcat .
  1. 启动容器
docker run -d -p 3344:8080 --name lxltomcat -v /home/ubuntu/tomcat/test:/usr/local/apache-tomcat-9.0.41/webapps/test -v /home/ubuntu/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.41/logs diytomcat
  1. 发布项目

在本地的挂载目录上可以上传自己的文件

发布镜像

DockerHub

  1. 要注册自己的账号
  2. 确定这个账号可以登录
  3. 使用 docker push

发布到阿里云

DockerFile小结

技术图片

Dockerfile

标签:apach   --   image   没有   env   命令   软件   sde   cmd   

原文地址:https://www.cnblogs.com/lxlhelloworld/p/14286490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!