dockerfile指令构建docker镜像的示例代码

目录
  • 初识Dockerfile
  • 编写一个自己的docker 镜像:
  • DockerFile
  • docker build . 命令
  • 查看镜像是如何生成的

初识Dockerfile

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

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

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

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

编写一个自己的docker 镜像:

编写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.048kB

Step 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    #指定这个容器启动时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT    #指定这个容器其董事会要运行的命令,可以追加命令

ONBUILD    #当构建一个被继承dockerfile,这个时候就会运行ONBUILD的指令。是一个触发指令

COPY    #类似ADD,将我们文件拷贝到镜像

ENV    #构建的时候设置环境变量!

docker build . 命令

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

#命令使用方法:
docker build -f dockerfile文件路径 -t 取个镜像名 .

#参数详解:

-f  dockerfile的文件路径,可以写绝对路径,也可以写相对路径

-t   给构建的镜像取个名字,名字格式: 名字:标签

.    构建上下文的路径 必须写
 

查看镜像是如何生成的

docker history 镜像ID

实操训练: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.sh

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

docker build 构建镜像

docker build -t my_build:nginx1 .

docker images查看镜像:

使用该镜像构建容器:

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

到此这篇关于dockerfile指令构建docker镜像的示例代码的文章就介绍到这了,更多相关dockerfile指令构建docker镜像内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Dockerfile构建自定义镜像的实现

    目录 前言 Dockerfile简介 Dockerfile构建镜像的流程 Dockerfile使用 前言 前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程pull下来的,那么我们能不能构建自己的镜像呢?答案是肯定滴,可以通过Dockerfile构建自己的镜像,Dockerfile本身并不难,就是一堆命令,让小编觉得有难度的地方是如何使用Dockerfile的这些命令从更高一层的角度上更好的去构建自己的镜像,我们就一起来看看吧. Dockerfile简介 Dockerfi

  • Dockerfile文件编写及构建镜像命令解析

    目录 指令解析 简单的Dockerfile文件 Build命令添加dockerfile参数 构建镜像 构建容器并端口映射启动 镜像上传到远程镜像仓库 部署 指令解析 FROM # 基于什么镜像 WORKDIR # 指定工作路径,没有就创建目录 ------ COPY # 拷贝,文件地址 ADD # 拷贝,也可以是文件地址,也可以是url网络资源 ------ RUN # 运行shell语句 ------ ENTRYPOINT 1.运行容器时,执行的脚本.可以是json数据指定,也可以是shell

  • 如何基于Dockerfile构建tomcat镜像

    dockerfile 是用来构建docker镜像的文件!命令参数脚本! 构建步骤: 编写一个dockerfile 文件 docker build 构建成一个镜像 docker run 运行镜像 docker push 发布镜像(DockerHub.阿里云镜像仓库) # 以contes为例 查看 dockerhub 上 contes 的 dockerfile FROM scratch ADD centos-7-x86_64-docker.tar.xz / LABEL \ org.label-sch

  • Docker如何使用Dockerfile构建镜像

    Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.Docker程序将读取Dockerfile,根据指令生成定制的image.相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是

  • 使用dockerfile构建nginx镜像的方法示例

    Dockerfile介绍 Docker通过读取Dockerfile里面的内容可以自动build image,Dockerfile是一个包含了build过程中需要执行的所有命令的文本文件.也可以理解为Dockfile是一种被Docker程序解释的脚本,由一条一条的指令组成,每条指令对应Linux系统下面的一条命令,由Docker程序将这些Dockerfile指令翻译成真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefil

  • 通过Dockerfile构建Docker镜像的方法步骤

    Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式. 使用Dockerfile构建Docker镜像时注意事项: (1).尽量选取满足需求但较小的基础系统镜像; (2).清理编译生成文件.安装包的缓存等临时文件; (3).安装各个软件时候要指定准确的版本号,并避免引入不

  • 使用Dockerfile构建docker镜像

    今天我们看看Dockerfile创建的方法. 构建docker镜像,有两种方法: 1.一种是使用docker commit命令 2.另外一种是基于docker build命令和dockerfile文件 通常情况下,dockerfile构建镜像比docker commit命令构建 镜像更加灵活,因此采用后者较多. 使用Dockerfile构建docker镜像 1.什么是Dockerfile? dockerfile是一个文件,它是使用DSL语法编写一个文件,之后使用docker build命令基于该

  • docker使用Dockerfile构建镜像的方法

    构建镜像 前面我们使用各种镜像进行测试演示,很多情况下我们是需要自己的镜像,满足自己业务需要的镜像,这就需要我们能够定制自己需要的镜像,构建 Docker 镜像有以下两种方法. 使用 docker commit 命令. 使用 docker build 命令和 Dockerfile 构建文件. 现在我们不推荐使用 docker commit 命令,而应该使用更灵活.更强大的 Dockerfile 来构建 Docker 镜像. 1.使用 commit 命令构建 docker commit 命令是创建

  • dockerfile指令构建docker镜像的示例代码

    目录 初识Dockerfile 编写一个自己的docker 镜像: DockerFile docker build . 命令 查看镜像是如何生成的 初识Dockerfile Dockerfile就是用来构建docker镜像的构建文件!命令脚本! 通过这个脚本可以生成镜像,镜像是一层层的,脚本是一行行的命令,每行命令都是一层 dockerfile是面向开发的,我们以后要发布项目,作镜像,就需要编写dockerfile文件,这个文件十分简单. Dockerfile镜像之间成为了企业交付的标准,必须掌

  • 浅谈使用Maven插件构建Docker镜像的方法

    本文介绍了使用Maven插件构建Docker镜像的方法,分享给大家,具体如下: 工具 工欲善其事,必先利其器.笔者经过调研,有以下几款Docker的Maven插件进入笔者视野: 插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin docker-maven-pl

  • 如何基于Jenkins构建Docker镜像

    这篇文章主要介绍了基于Jenkins构建Docker镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 1. SpringCloud项目结构 注意Dockerfile文件的位置,跟src和pom.xml同级,后面会用到这个文件,若不同级,后面选择

  • SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

  • 详解SpringBoot构建Docker镜像的3种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2)使用 Google 的 jib-maven-plugin. (3)使用 dockerfle-maven-plugin. Spring Boot 应用 为了方便实践,需要一个 Spring Boot 项目. Demo 项目地址: https://github.com/davelms/medium-ar

  • Maven插件构建Docker镜像的实现步骤

    背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网状分布的,有很多服务需要维护和管理,对它进行部署和维护的时候则比较复杂. 下面从Dev的角度来看一下Ops的工作.从Dev提交代码,到完成集成测试的一系列步骤如下: 首先是开发人员把程序代码更新后上传到Git,然后其他的事情都将由Jenkins自动完成. 然后Git在接收到用户更新的代码后,会把消息

  • Spring Boot 2.4 新特性之一键构建Docker镜像的过程详解

    背景 在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugin 插件就是为了帮助我们在 Maven 工程中,通过简单的配置,自动生成镜像并推送到仓库中. spotify .fabric8 这里主要使用的主要是如下两种插件 spotify .fabric8 , - -配置通过 xml 定义出 Dockerfile 或者挂载外部 Dockerfile 通过调用

  • Jenkins打包微服务构建Docker镜像运行的实现

    目录 环境准备 开始 1.GitLab远程仓库创建微服务项目 2.IDEA代码推送到Gitlab 3.Jenkins创建流水线项目 4.参数化构建 5.拉取远程仓库的构建脚本 6.编写远程审查脚本sonar-project.properties 构建脚本 环境准备 1.Jenkins 2.GitLab 3.SonarQube 4.Harbor 5.Docker 6.Maven 7.JDK1.8 8.微服务项目 以上技术部分在我之前的文章中有写过 这里就不过多细化的演示,本文章主要是连贯性的将微服

随机推荐