目录

初识Dockerfile

编写一个自己的docker 镜像:

编写Dockerfile文件:

将Dockerfile文件转为镜像:

查看自己构建的docker镜像

使用自己构建的docker镜像生成容器:

DockerFile

Dockerfile指令:

docker build . 命令

查看镜像是如何生成的

实操训练:Dockerfile构建Nginx镜像:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx1。首先创建目录dockerfile-nginx1,保存Dockerfile文件。具体要求如下:

开始操作:

创建dockerfile-nginx1文件夹,进入该文件夹,编写Dockerfile文件

编写Dockerfile文件内容:

在该文件夹里再编写一个run.sh

docker build 构建镜像

docker images查看镜像:

使用该镜像构建容器:


初识Dockerfile

Dockerfile就是用来构建docker镜像的构建文件!命令脚本!

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

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

Dockerfile镜像之间成为了企业交付的标准,必须掌握!

编写一个自己的docker 镜像:

查看一个镜像是怎么生成的:

docker history 镜像ID或镜像名

构建步骤:

1、编写一个dockerfile文件2、docker build 构建成为一个镜像3、docker run 运行镜像4、docker push 发布镜像

编写Dockerfile文件:

#创建一个dockerfile文件,名字可以随机,建议Dockerfile
#文件中的内容:指令(大写) 参数#实例测试:
#创建目录存放dockerfile文件的目录:
[root@localhost ~]# mkdir docker_test#进入目录创建dockerfile文件:
[root@localhost ~]# mkdir docker_test
[root@localhost ~]# cd docker_test/
[root@localhost docker_test]# touch dockerfile#编写dockerfile文件,在文件中写入dockerfile指令:
[root@localhost docker_test]# vim dockerfile
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash

将Dockerfile文件转为镜像:

#使用docker build . 命令将dockerfile文件转为镜像[root@localhost docker_test]# docker build -f /root/docker_test/dockerfile -t hzw/centos .
Sending build context to Docker daemon  2.048kBStep 1/4 : FROM centos---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]---> Running in d4b23ae86ace
Removing intermediate container d4b23ae86ace---> 8f39792fbef7
Step 3/4 : CMD echo "----end----"---> Running in 1bb4751f04ef
Removing intermediate container 1bb4751f04ef---> 2e2bb5e2a502
Step 4/4 : CMD /bin/bash---> Running in 82a0b5905405
Removing intermediate container 82a0b5905405---> 39a1fd86fd73
Successfully built 39a1fd86fd73
Successfully tagged hzw/centos:latest#由此可以发现docker创建镜像也是一层层创建的。每个命令都是镜像的一层。

查看自己构建的docker镜像

[root@localhost docker_test]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
hzw/centos            latest    39a1fd86fd73   2 minutes ago   231MB

使用自己构建的docker镜像生成容器:

[root@localhost docker_test]# docker run -it hzw/centos /bin/bash
[root@f62a714bb306 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01  volume02#可以看见我们构建的镜像也是能正常进去使用的,并且我们在dockerfile写指令挂载的目录也在这个容器里。

DockerFile

dockerfile时用来构建docker镜像文件!命令参数脚本!
构建步骤:

1、编写一个dockerfile文件

2、docker build . 构建称为一个镜像

3、docker run 运行镜像

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

Dockerfile指令:

FROM    #指定基础镜像,一切从这里开始构建MAINTAINER    #镜像是谁写的,姓名+邮箱RUN    #镜像构建的时候需要运行的命令ADD    #步骤:tomcat镜像,这个tomcat压缩包!添加内容WORKDIR    #镜像的工作目录VOLUME    #挂载的目录EXPOST    #暴露端口配置CMD    #指定这个容器启动时候要运行的命令,Dockerfile里有多个CMD指令的话,只有最后一个CMD指令会生效,可被替代ENTRYPOINT    #指定这个容器其董事会要运行的命令,可以追加命令ONBUILD    #当构建一个被继承dockerfile,这个时候就会运行ONBUILD的指令。是一个触发指令COPY    #类似ADD,将我们文件拷贝到镜像ENV    #构建的时候设置环境变量!

docker build . 命令

构建好dockerfile文件后,我们就用docker build命令将文件构建成镜像。

#命令使用方法:
docker build -f dockerfile文件路径 -t 取个镜像名 .#参数详解:-f  dockerfile的文件路径,可以写绝对路径,也可以写相对路径-t   给构建的镜像取个名字,名字格式: 名字:标签.    构建上下文的路径 必须写

查看镜像是如何生成的

docker history 镜像ID

docker命令总结:

实操训练:Dockerfile构建Nginx镜像:

编写Dockerfile制作镜像,生成镜像名为my_build:Nginx1。首先创建目录dockerfile-nginx1,保存Dockerfile文件。具体要求如下:

(1)基于镜像centos:7

(2)安装Nginx

a.安装相关依赖

b.下载并解压Nginx

(3)工作目录设为:nginx-1.9.7

(4)编译安装Nginx

(5)对外暴露80,443端口

(6)修改Nginx配置文件,以非daemon方式启动

(7)复制服务启动脚本并设置权限

(8)启动容器时执行脚本run.sh

run.sh内容如下所示:

开始操作:

创建dockerfile-nginx1文件夹,进入该文件夹,编写Dockerfile文件

mkdir dockerfile-nginx1
cd dockerfile-nginx1/
vim Dockerfile

编写Dockerfile文件内容:

#该文件时基于centos7镜像为基础创建的
FROM centos:7  #下载nginx依赖源
RUN yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel    #下载wget
RUN yum install -y wget   #下载nginx
RUN wget http://nginx.org/download/nginx-1.9.7.tar.gz   #解压nginx
RUN tar -zxvf nginx-1.9.7.tar.gz    #执行编译命令,通过--prefix=安装目录,指定nginx安装目录
RUN ./configure --prefix=/usr/localinx && make && make install    #设置工作目录
WORKDIR nginx-1.9.7    #暴露端口80和443
EXPOSE 80
EXPOSE 443#将虚拟机文件复制到容器里
ADD run.sh /run.sh#给run.sh授予可执行权限
RUN chmod 775 /run.sh#启动容器后执行run.sh脚本
CMD ["/run.sh"]

在该文件夹里再编写一个run.sh

vim run.shrun.sh里的内容:
#!/bin/bash
/usr/local/nginx/sbin/nginx

docker build 构建镜像

docker build -t my_build:nginx1 .

docker images查看镜像:

使用该镜像构建容器:

可以看到镜像成功启动,东西也下载安装好了,工作目录设置好了,文件也复制到容器里了

Docker进阶 dockerfile指令构建docker镜像相关推荐

  1. docker之Dockerfile指令介绍

    Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...

  2. Docker进阶(3)docker容器编排-docker compose、swarm、service

    Docker进阶(3)docker容器编排 Docker进阶(3)docker容器编排 1. 容器编排 2. docker compose 2.1 安装 2.2 官方文档创建一个简单的web应用 2. ...

  3. Docker之Dockerfile 指令详解

    闲话不多说,dokerfile常用指令解析奉上 FROM 作用:指定基础镜像,必须放在DOckerfile的第一行,表示从哪个baseimage开始构建 格式: FROM <image>: ...

  4. Docker学习——Dockerfile 指令详解(五)

    2019独角兽企业重金招聘Python工程师标准>>> 我们已经介绍了 FROM (指定基础镜像) , RUN(执行命令) ,还提及了 COPY , ADD ,其实 Dockerfi ...

  5. Dockerfile指令详解镜像构建实例说明

    Dockerfile使用总结 Dockerfile是用来构建镜像的文本文件,里面包含了一条条用于构建镜像所需的指令和说明. Dockerfiel文件中的每一层指令都是描述如何在上一层的基础上进行该层的 ...

  6. Docker——使用Dockerfile制作java程序镜像

     1.准备制作镜像需要的jar包和java镜像 上传jar包到/home/docker目录下 拉取java镜像:docker pull java:8 2.在jar包同级目录下创建Dockerfile文 ...

  7. Docker Hub + Github 自动化构建docker镜像

    自动创建(Automated Builds)功能对于需要经常升级镜像内程序来说,十分方便. 有时候,用户创建了镜像,安装了某个软件,如果软件发布新版本则需要手动更新镜像. 而自动创建允许用户通过Doc ...

  8. 流水线中使用 docker in pod 方式构建容器镜像

    上个月参加了 Rancher 社区举办的 <Dockershim 即将被移除,你准备好了么?[1]>直播分享后,得知自 1.24 版本之后,Kubernetes 社区将正式放弃对 dock ...

  9. Docker创建Dockerfile脚本构建jdk1.8镜像并启动容器示例

  10. Docker使用Dockerfile脚本创建自定义镜像

    步骤: (1)创建目录 mkdir –p /usr/local/dockerjdk8 (2)下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/d ...

最新文章

  1. Cocos Creator 预制的使用模板(一般用于UI)
  2. Microsoft SQL Server 2000清理LDF日志
  3. 2021牛客NOIP提高组OI赛前模拟赛第一场T2——牛牛和数组操作(区间dp)
  4. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 问题
  5. C#实现WEB服务器
  6. 局域网内数据采集总结(三)
  7. Python学习-day20 django进阶篇
  8. java math mod_java8 Math新增方法介绍
  9. python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)
  10. Ns3 构建哑铃型拓扑,并实现两个点的TCP连接(详细请戳全文)
  11. 【Redis高手修炼之路】客户端工具——客户端工具以及常用命令
  12. FastReport.NET v2022.2.7
  13. 【修电脑】电脑将在1分钟后重启
  14. 万能网页视频下载教程
  15. 带你开发一款给Apk中自动注入代码工具icodetools(完善篇)
  16. 岁月温柔-8 妈妈的抑郁症?
  17. Xilinx HLS 导出IP失败的最新解决方案(2022.1.15)
  18. C# Hello World 实例
  19. gc java ibm_gc分析工具(IBM Pattern Modeling and Analysis Tool for Java Garbage Collector)
  20. 预防网络诈骗PPT模板

热门文章

  1. jQuery 效果 - stop() 方法
  2. 使用github创建个人网站
  3. 利用audacity分析浊音、清音与爆破音的信号特性
  4. 怎么查看视频的md5值
  5. 证券交易所的运作系统
  6. invalid index of a 0-dim tensor
  7. CF685B Kay and Snowflake
  8. spring5简单整理
  9. 【探索HTML5第二弹03】走近地图应用的世界,看我们google地图可以看些什么!
  10. VLAN访问控制列表