首页 > 其他 > 详细

Dockerfile

时间:2021-01-16 21:47:26      阅读:88      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!