Dockerfile简介+使用

这篇具有很好参考价值的文章主要介绍了Dockerfile简介+使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Dockerfile概述:

Dockerfile是docker中镜像文件的的描述文件,说的直白点就是镜像文件到底是由什么东西一步步构成的。
例如:你在淘宝上买了一个衣架,但是卖家并没有给你发一个完整的衣架,而是一些组件和一张图纸,你按照这个图纸一步一步将衣架组装起来,就成了你所需要的样子。那么Dockerfile 就是这张图纸,镜像文件就是你需要的这个衣架,Dockerfile 不建议随便命名,就用 Dockerfile。
因此,Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

Docker 执行 Dockerfile 的大致流程:

(1)docker从基础镜像运行一个容器;
(2)执行一条指令并对容器作出修改;
(3)执行类似dockercommit的操作提交一个新的镜像层
(4)docker再基于刚提交的镜像运行一个新容器;
(5)执行dockerfile中的下一条指令直到所有指令都执行完成。

二、指令:

• FROM

• MAINTAINER

• RUN

• CMD

• EXPOSE

• ENV

• ADD

• COPY

• ENTRYPOINT

• VOLUME

• USER

• WORKDIR

• ONBUILD

一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

三、构建一

1.分步执行(构建、运行)

build.sh

#!/bin/bash

cp ../../xxx/target/xxx.jar .
cp ../jdk-8u202-linux-x64.tar.gz .
mkdir config
cp ../../xxx/src/main/resources/application* ./config/

docker stop xxx
docker rm xxx
docker rmi xxx:1.0.0

docker build -t xxx:1.0.0 .

docker save xxx:1.0.0 >xxx-1.0.0.tar

rm -rf jdk-8u202-linux-x64.tar.gz xxx.jar config

Dockerfile

FROM centos:7.6.1810

MAINTAINER xxx "xxx@xxx.com"

COPY xxx.jar     /app/

COPY config/   /app/config

COPY entrypoint.sh  /app

RUN chmod +x /app/entrypoint.sh

ADD jdk-8u202-linux-x64.tar.gz    /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV PATH $JAVA_HOME/bin:$PATH

WORKDIR   /app

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8

ENTRYPOINT ["/app/entrypoint.sh"]

entrypoint.sh

#!/bin/bash

cd /app
java -Xmx2G -Xms2G -jar /app/xxx.jar &

# docker部署时,保证脚本不退出
while true; do
  sleep 3
done

run.sh

#!/bin/bash

RDS_URL=ip:3306
RDS_USERNAME=root
RDS_PASSWORD=123456

docker run -itd \
  --name xxx \
  -e RDS_URL="${RDS_URL}" \
  -e RDS_USERNAME="${RDS_USERNAME}" \
  -e RDS_PASSWORD="${RDS_PASSWORD}" \
  -e TZ="Asia/Shanghai" \
  -p 8080:8080 \
  xxx:1.0.0

运行build.sh构建镜像,再运行run.sh构建容器。

2.整合构建和运行

install.sh

#!/bin/bash

echo "======configuration variables======"
container_name=xxx
image_name=xxx
workdir=/home/${container_name}
logging_config=config/logback-spring.xml
version=1.0.0
port=8080

echo "======rm container and rmi image======"
docker stop ${container_name}
docker rm ${container_name}
docker rmi ${image_name}:${version}

echo "======build image======"
docker build -t ${image_name}:${version} .

echo "======run container======"
docker run -itd \
  --name=${container_name} \
  -v $PWD/logs:${workdir}/logs \
  -v $PWD/config:${workdir}/config \
  --restart=always \
  -e JAVA_OPTS='-Xmx2G -Xms2G' \
  -e TZ="Asia/Shanghai" \
  -p ${port}:${port} \
  ${image_name}:${version} \
  --server.port=${port} \
  --logging.config=${logging_config}

Dockerfile

FROM centos:7.6.1810

MAINTAINER xxx "xxx@xxx.com"

ENV container_name=xxx
WORKDIR   /home/${container_name}

COPY *.jar app.jar

ADD jdk-8u202-linux-x64.tar.gz    /usr/local/java
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_202
ENV PATH=$JAVA_HOME/bin:$PATH

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL=zh_CN.UTF-8

ENTRYPOINT ["java","-jar","app.jar"]

运行install.sh构建镜像并生成容器

总结

我们可以像写脚本一样把操作docker的命令写在这个文件里,执行这个文件就相当与执行一系列docker命令来构建镜像,并且会自己提交到本地从仓库,我们如果想改变镜像,操作这个文件就可以,分享这个文件也就相当于分享镜像,更加方便文章来源地址https://www.toymoban.com/news/detail-743173.html

到了这里,关于Dockerfile简介+使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】Dockerfile简介

    Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 我们使用docker commit可以构造镜像,但是docker中的镜像随时变化,不能一次次的使用commit,因此使用Dockerfile来一次性构建。 官网地址:https://docs.docker.com/engine/reference/builder/ 编写Do

    2024年02月01日
    浏览(39)
  • DockerFile 简介

    目录 1. 是什么 2 构建过程解析 2.1 构建的三个步骤 2.2 Docker内容基础知识 2.3 Docker执行DockerFile的大致流程 3. DockerFile 常用保留字指令 4. 案例理解常用保留字指令 4.1 案例要求 4.2 pull镜像 4.3 编写 Dockerfile文件 4.4 构建 4.5 运行 5. 虚悬镜像 5.1 是什么 5.2 查找容器中的虚悬镜像

    2024年04月12日
    浏览(27)
  • Docker容器---dockerfile简介

    1、dockerfile介绍 dockerfile是自定义镜像的一套规则,dockerfie由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层。Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(

    2023年04月23日
    浏览(53)
  • 【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】

      Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令(Instruction)和操作命令;每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建(也就是你要执行的操作命令)。  dockerfile是纯文本文件;  dockerfile是用来

    2024年01月18日
    浏览(44)
  • 记一次linux系统使用dockerfile编写容器支持中文字体环境

    今天研发开发一个网上受理需要容器支持中文环境否则服务启动起来会出现中文乱码。 解决思路: 1、先把jar把在本地环境直接加参数运行如果运行起来无乱码说明本地的字体文件就可以直接COPY到容器中使用,如果还是乱码就说明本地的字体文件不支持中文环境,就需要下载

    2024年02月09日
    浏览(59)
  • 【Docker】如何编写Dockerfile,深入理解 Dockerfile:构建精简且高效的容器镜像

    Docker 是一种轻量级的容器化技术,使得应用程序和它们的依赖可以被打包到一个容器中,方便在不同环境中运行。Dockerfile 是用于定义 Docker 镜像的文本文件,其中包含了一系列的指令,这些指令描述了镜像中应该包含哪些内容和如何配置。 在开始编写 Dockerfile 之前,确保你

    2024年01月24日
    浏览(54)
  • Docker技术入门| Part03:Dockerfile详解(Dockerfile概念、Dockerfile 指令、使用Dockerfile构建镜像)

    Docker镜像原理 Docker镜像是由特殊的文件系统叠加而成 最底端是bootfs,并使用宿主机的bootfs 第二层是root文件系统rootfs,称为base image 然后再往上可以叠加其他的镜像文件 统文件系统(UnionFile System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统的视角,这样就隐

    2024年02月09日
    浏览(64)
  • dockerfile的使用,使用dockerfile部署springboot项目

    Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。 官网:https://docs.docker.com/engine/reference/builder/ 1:每条保留字指令都 必须为大写字母 且后面要跟随至少一个参数 2:指令按照从上到下,顺序执行 3:#表示注释 4:每条指令都会创建

    2024年02月05日
    浏览(39)
  • Dockerfile如何制作mysql镜像

    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。 1. 编写dockerfile_mysql5.7 在文件夹/root/dockerfile/mysql创建文件dockerfile_mysql5.7 这里是先导入数据,然后才是设置用户和权限

    2024年02月06日
    浏览(32)
  • 如何写一个简单的dockerfile

    Dockerfile 是一种文本文档,它包含了一组用户可以调用以创建镜像的指令。用户可以使用 docker build 命令,根据 Dockerfile 中定义的步骤,自动构建出一个新的 Docker 镜像。 以下是一些常用的 Dockerfile 指令: FROM:设置基础镜像,必须为第一个非注释指令。 ADD:将文件从 Docker 主

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包