docker入门与应用系列dockerfile

author author     2022-10-05     429

关键词:

Dockerfile是为快速构建docker image而设计的,当你使用dockerbuild 命令的时候,docker 会读取当前目录下的命名为Dockerfile(首字母大写)的纯文本文件并执行里面的指令构建出一个docker image。

Dockerfile 由一行行命令语句组成,并且支持以#开头的注释行。

指令是不区分大小写的,但是通常我们都大写。

指令

描述

格式

FROM

构建的新镜像基于那个镜像

FROM centos:6

MAINTAINER

镜像维护者信息

MAINTAINER syavingc

RUN

构建镜像运行的shell命令、

命令较长使可以使用来换行

格式:RUN <command>或 RUN["executable", "param1", "param2"]

RUN yum install nginx

CMD

运行容器时执行的shell命令

解释:

   CMD指定容器启动是执行的命令,每个Dockerfile只能有一条CMD命令,如果指定了多条,只有最后一条会被执行。如果你在启动容器的时候也指定的命令,那么会覆盖Dockerfile构建的镜像里面的CMD命令。

CMD ["-c", "start.sh"]

CMD ["/usr/sbin/sshd", "-D"]

CMD /usr/sbin.sshd -D

EXPOSE

生成容器运行的服务端口

EXPOSE 80 443

ENV

设置容器内环境变量

ENV MYSQL_ROOT_PASSWORD123456

ADD

拷贝文件或者目录到镜像,如果是URL或压缩包会自动下载或者自动解压

ADD <src>…<dest> 将指定的<src>复制到容器文件系统中的<dest>

ADD ["<src>",... "<dest>"]

ADD http.tar.gz /var/www/html

COPY

拷贝文件或目录到镜像

同上

VOLUME

指定容器挂载点到宿主机自动生成的目录或其他容器

VOLUME ["/usr/local/mysql"]

USER

指定运行容器时的用户名和UID,后续的RUN指令也会使用这里指定的用户。

USER syavingc

USER <user>[:<group>] or USER <uid>[:<GID>]

WORKDIR

为RUN、CMD、COPY、ADD设置工作目录

WORKDIR /data/

ENTRYPOINT

运行容器时执行的shell命令

ENTRYPOINT ["/bin/bash", "-c", "/start.sh"]

ENTRYPOINT /bin/bash -c ‘/start.sh‘

HEALTHCHECK

健康检查

HEALTHCHECK --interval=5m --timeout=3s

CMD curl -f http://localhost/ || exit 1

ARG

ARG指定了一个变量在docker build的时候使用,可以使用--build-arg <varname>=<value>来指定参数的值,不过如果构建的时候不指定就会报错

ARG<name>[=<default value>]

 

 RUN、CMD和ENTRYPOINT指令区别

1、RUN在building时运行,可以写多条

2、CMD和ENTRYPOINT在运行container时运行,只能写一条,如果写多条,最后一条生效。

3、CMD在RUN时可以被COMMAND覆盖,ENTRYPOINT不会被COMMAND覆盖,但可以指定-ENTRYPOINT覆盖

1.1 Build镜像命令

使用Dockerfile文件构建镜像

docker build [options] path|url|-
options:
-t --tag list    #镜像名称
-f --file string #指定Dockerfile文件位置
#实例
docker build .        #默认找当前目录以Dockerfile为命名的文件
docker build -t data/app -t /path/Dockerfile /path
docker build -t data/app - < Dockerfile
docker build -t data/app - < test.tar.gz
docker build -t data/app http://www.syaving.com/Dockerfile
docker build -t data/app http://www.syaving.com/test.tar.gz

 

 

docker从入门到实践系列五-dockerfile文件(代码片段)

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1.FROM2.MAINTAINER3.RUN4.CMD5.COPY6.ENV7.ADD8.ENTRYPOINT9.VOLUME10.WORKDIR11.EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfi 查看详情

docker系列教程之四dockerfile入门(代码片段)

在上一篇的文章中,我们把 Docker 容器的工作流程剖析的十分清楚了,我们大体可以知道 Docker 组件协作运行容器可以分为以下几个过程:Docker 客户端执行 dockerrun 命令Dockerdaemon 发现本地没有我们需... 查看详情

docker入门与应用系列docker私有与公共镜像仓库

1.搭建私有镜像仓库DockerHub作为Docker默认官方公共镜像;如果想搭建自己的私有镜像仓库,官方提供registry镜像,使搭建私有仓库非常简单1.1.1下载registry镜像并启动dockerpullregistrydockerrun-d-v/opt/registry:/var/lib/registry-p5000:5000--restart=al... 查看详情

docker入门与应用系列网络管理

一、Docker的五种网络模式  在使用dockerrun创建docker容器时,可以用--net选项指定容器的网络模式,Docker有以下5种网络模式:   1.bridge模式   使用dockerrun--net=bridge指定,bridge模式是Docker默认的网络设置,此模式会为... 查看详情

docker从入门到实践系列五-dockerfile文件(代码片段)

文章目录什么是DockerFile文件DockerFile基本结构DockerFile指令详解1.FROM2.MAINTAINER3.RUN4.CMD5.COPY6.ENV7.ADD8.ENTRYPOINT9.VOLUME10.WORKDIR11.EXPOSEDockerFile创建镜像镜像管理DockerFile模版JDK镜像模版Docker数据持久化构建过程解析构建步骤基础知识Dockerfi... 查看详情

docker入门与应用系列镜像管理

1.1什么是镜像  简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。1.2镜像从哪里来  DockerHub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。https://hub... 查看详情

docker入门与应用系列网络管理

Docker支持五种网络模式 bridge默认网络,docker启动后创建一个dockr0网桥,默认创建的容器也是添加到这个网桥中;IP地址段是172.17.0.1/16 host容器不会获得一个独立的networknamespace,而是与宿主机共用一个 none获取独立的networknamespace... 查看详情

docker入门与应用系列介绍和部署

Docker介绍    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口... 查看详情

docker入门与应用系列docker图形界面管理之shipyard

Shipyard基于DockerAPI实现的容器图形管理系统,支持container、images、engine、cluster等功能,可满足我们基本的容器部署需求可堆栈的Docker管理基于DockerSwarm,Shipyard可让您管理Docker资源,包括容器,图像,私人注册表等等。Shipyard与其... 查看详情

docker入门与应用系列容器管理

...是将终止状态的容器重新启动。1.1新建并启动主要命令为dockerrun下面的命令输出一个”Hello,world!”,之后终止容器[[email protected]~]$dockerruncentos:7/bin/echo"hello,world"hello,world  启动一个ba 查看详情

docker入门与应用系列docker图形界面管理之dockerui

1.dockeruiDockerrUI是一个基于DockerAPI提供图形化页面简单的容器管理系统,支持容器管理、镜像管理。1.1下载镜像dockerpullabh1nav/dockerui:latest1.2执行dockerrun-d-p9000:9000-v/var/run/docker.sock:/docker.sock--namedockeruiabh1nav/dockerui:lates 查看详情

docker系列-第七篇docker构建springboot应用

1.基于Dockerfile构建SpringBoot镜像1.1准备工作将SpringBoot项目通过maven打成jar包mvncleanpackage#使用maven打包项目1.2使用Dockerfile构建镜像step1在存放jar所在目录下创建Dockerfile文件touchDockerfilestep2编辑Dockerfile增加以下内容FROMjava:8MAINTAINERniuga 查看详情

docker系列-第七篇docker构建springboot应用

1.基于Dockerfile构建SpringBoot镜像1.1准备工作将SpringBoot项目通过maven打成jar包mvncleanpackage#使用maven打包项目1.2使用Dockerfile构建镜像step1在存放jar所在目录下创建Dockerfile文件touchDockerfilestep2编辑Dockerfile增加以下内容FROMjava:8MAINTAINERniuga 查看详情

docker入门-docker运行springboot应用

...ocker部署项目dockfileDockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令, 查看详情

docker系列-第六篇dockerfile解析(代码片段)

1.手动编写一个dockerfile文件,当然必须要符合file的规则2.有了这个文件,直接dockerbuild命令执行,获得一个自定义的镜像3.run1.是什么Dockerfle是一个文本格式的配置文件,用户可以使用Dockerfle来快速创建自定义的镜像。Dockerfile是... 查看详情

docker常用命令与应用(代码片段)

docker入门与dockerfile介绍原文地址docker常用命令https://blog.csdn.net/leilei1366615/article/details/106267225dockerfile详解https://blog.csdn.net/m0_46090675/article/details/121846718?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166745827216782427492149%2522%252C%2522scm%252... 查看详情

docker基础知识和命令使用入门(代码片段)

...部分包括Docker的用途和意义,Docker的镜像、容器、仓库、Dockerfile和DockerCompose的理解,以及Docker图形管理工具Portainer的基础功能。Docker命令的使用包括镜像使用、容器使用、网络使用以及Docker本身的信息显示的方法,DockerCompose使... 查看详情

docker入门系列02(代码片段)

上篇用一个简单的示例,简单的介绍了Dockerfile的配置及其相关的命令。这一篇会在上篇的示例程序里,继续添加新代码及如何将单元测试也放入Image建立过程内。首先,我们需要建一个新的类库,将业务相关的代码从原来的项目... 查看详情