您当前的位置 :财经天下 >购物 >  内容正文
投稿

Docker镜像和Dockerfile详解

财经天下2020-03-21 07:09:31来源:阅读:

镜像是容器的模板,容器是镜像运行的实例,可以类比为模具和实物的关系或者编程语言里面"类"和"实例"的关系,镜像是静态的定义,容器是动态运行的实体

一、镜像的构成

hello-world

Hello-world是docker官方提供的一个很小的镜像,用来测试docker是否正确运行

$ docker run hello-world$ docker images

这个镜像才1.04kb,我们看下他的Dockerfile描述

FROM scratchCOPY hello /CMD ["/hello"]

(1) FROM scratch 说明镜像是白手起家,从0开始构建

(2) COPY hello / 将文件"hello"复制到镜像的目录

(3) CMD ["/hello"] 容器启动时执行 /hello

二、Dockerfile的构建

概念:Dockerfile 是一个包含创建镜像所有命令的文本文件,通过do上海石化cker build命令可以根据 Dockerfile 的内容构建我们自己需要的镜像

base镜像:

a、不依赖其他镜像,从scratch开始

b、以其他镜像为基础扩展

Dockerfile常用指令,主要分为配置指令和操作指令,一图展示各种命令


dockerfile常用命令

配置指令

2.1、ARG(定义镜像创建过程中的变量)

用法:ARG <name>[<default value>]

2.2、FROM

用法:FROM <image>
  • FROM指定构建镜像的基础源镜像,如果本地没有该镜像,默认会从 DockerHub上拉取镜像
  • FROM scratch 说明镜像是从0开始构建,不依赖其他镜像
  • FROM可以在一个 Dockerfile 中出现多次,如果有需求在一个 Dockerfile 中创建多个镜像

2.3、LABEL

用法:LABEL <key>=<value> <key>=<value> <key>=<value>

例如:LABEL version="l.0.0-rc3"

LABEL author="[email protected]上海石化ub" date="2020-01-01"

2.4、EXPOSE(声明镜像内服务监听的端口)

用法:EXPOSE <port>

例如:EXPOSE 22 80 8443

2.5、ENV

用法:ENV <key> <value>或 ENV <key>=<value>

例如:

ENV APP_VERSION=1.0.0

ENV APP_HOME=/usr/local/bin

ENV PATH $PATH:/usr/local/bin

2.6、ENTRYPOINT

支持两种格式:

□ ENTRYPOINT ["executable上海石化", "paraml ", "param2"]:exec 调用执行;

□ ENTRYPOINT command param 1 param2: shell 中执行;

每个Dockerfile 中只能有一个ENTRYPOINT, 当指定多个时,只有最后一个起效。

2.7、WORKDIR

指定工作目录

用法:WORKDIR <PATH>

WORKDIR /root/test

操作指令

2.8、RUN

用法:RUN <command>

例如:

RUN apt-get update \

&& apt-get install -y libsnappy-dev zliblg-dev libbz2-dev \

&& rm -rf /var/cache/apt

2.9、CMD(启动容器时指定默认执行的命令)

用法:CMD command paraml param2 :在默认的Shell 中执行

每个Dockerfile 只能有一条CMD 命令。如果指定了多条命令,只有最后一条会被执行

2.10、ADD

格式为ADD <src> <dest>

COPY的作用和ADD类似,这里不再赘述

三、通过示例练习Dockerfile

# This my first nginx Dockerfile# Version 1.0# Base images 基础镜像FROM centos#MAINTAINER 维护者信息MAINTAINER pythontaotao#ENV 设置环境变量ENV PATH /usr/local/nginx/sbin:$PATH#ADD  文件放在当前目录下,拷过去会自动解压ADD nginx-1.8.0.tar.gz /usr/local/  ADD epel-release-latest-7.noarch.rpm /usr/local/  #RUN 执行以下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpmRUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-deve上海石化l pcre && yum clean allRUN useradd -s /sbin/nologin -M www#WORKDIR 相当于cdWORKDIR /usr/local/nginx-1.8.0 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make installRUN echo "daemon off;" >> /etc/nginx.conf#EXPOSE 映射端口EXPOSE 80#CMD 运行以下命令CMD ["nginx"]

(正文已结束)

推荐阅读:凤庆县刚紫南水产资讯中心

免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!

网站简介 - 联系我们 - 营销服务 - 老版地图 - 版权声明 - 网站地图
Copyright.2002-2019 财经天下 版权所有 本网拒绝一切非法行为 欢迎监督举报 如有错误信息 欢迎纠正
思科新药Avana未上市阿里健康药房男士中心推出。山东黄金日产量恢复80%以上,遭遇不可抗力,如何逆势突破?海沧货运走廊通往岛内,明年初将建一条匝道。“十四五”期间,工业园区上市公司将重新洗牌。招商证券:深化资本市场改革,中小企业迎来更好发展机遇。厦门数字葡萄酒平台今天上午上线。美国10年期国债收益率升至1.473%,为近三个月来最高。88个创新项目在同一领域竞争。社保缴费智能提醒服务上线。厦门造船前世藏在下河路尽头。我市降低低保门槛。这架古董钢琴起价228万元。