Docker --Dockerfile(制作镜像)

摘要:
如果指定了多个CMD命令,则只执行最后一个命令。如果用户指定启动容器时要运行的命令,则CMD指定的命令将被覆盖。
Dockerfile

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像

Dockerfile 常用指令

FROM

作用:指定基础镜像,Dockerfile中FROM是必备指令,且必须是第一条指令;
格式:FROM <image>:[tag]

FROM busybox

LABEL

作用:设定元数据
格式:LABEL <key>=<vlaue> <key>=<value> ...
其中:LABEL指令将元数据以多个键值对方式指定

LABEL auther="du"

COPY

作用:将工作目录中的文件复制到所做得镜像的文件系统中
格式:COPY <src><src>... <dest>

COPY index.html  /usr/share/nginx/html/

其中:

  • <src>必须用相对路径,<dest>一般用绝对路径
  • 源文件必须在工作目录或工作目录的子目录(相对路径可以找到)
  • 支持通配符
  • <dest>可以不存在,会自动创建
  • <src>是一个目录,会自动复制目录下的文件到目标位置,
  • 如果复制多个文件,或者<src>中使用了通配符,那么<dest>必须以/结尾

ADD

格式:ADD <src><src>... <dest>
作用:复制指定的 <src> 到容器中的 <dest>
其中: <src> 可以是 Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个 URL;还可以是一个 tar 文件(自动解压)

ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/at-sysvinit-3.1.13-24.el7.x86_64.rpm ./

WORKDIR

作用:相当于cd命令;指定工作目录;可以使用多个 WORKDIR 指令
格式:WORKDIR PSTH

WORKDIR /pack/nginx/

VOLUME

作用:创建并指定数据卷挂载点
格式:VOLUME ["/data1","/data2"]

VOLUME  /webroom

EXPOSE

作用:设置Docker容器内部暴露的端口号
格式:EXPOSE port port ...

EXPOSE 22 80 

ENV

作用:设置环境变量
格式:ENV var1=value1 var2=value2 ...

ENV path=/usr/share/nginx/html/

ARG

作用:定义变量
格式:ARG key=value key=value
其中:ARG构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是, ARG 所设置的构建的环境变量,在将来容器运行时是不会存在这些环境变量的

RUN

作用:基于镜像构建容器时运行命令
格式:RUN cmd && com

RUN touch testnginx

CMD

作用:定义容器启动以后要默认运行的程序,pid为1的程序
格式:CMD ["命令","参数","参数"]

CMD ["-g","daemon off;"]

其中:指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。如果用户在启动容器时指定了要运行的命令,则会覆盖掉 CMD 指定的命令。

ENTRYPOINT

作用:配置容器启动后执行的命令和参数,类似CMD
区别:运行时CMD不能添加参数,而ENTRYPOINT可以添加参数 eg:docker run DockerFile -i

https://www.cnblogs.com/reachos/p/8609025.html

USER

作用:指定运行容器时的用户名和UID,
格式:USER username|uid

USER du

ONBUILD

作用:定义触发器,当本镜像被指定为基础镜像时触发
格式:ONBUILD cmd

...
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build –dir /app/src
...

创建镜像

第一步:编写dockerfile

╭─root@du-z ~  
╰─➤   mkdir /nginx
╭─root@du-z ~  
╰─➤   cd /nginx
╭─root@du-z /nginx  
╰─➤   vim Dockerfile
FROM docker.io/nginx:latest
LABEL author=du
COPY ./passwd /data/
WORKDIR /pack/nginx/
ENV  pkgname=nginx-1.14.0.tar.gz  root=/data/mysql/mysql3306/data/
COPY nginx-1.14.0.tar.gz $root
VOLUME $root
EXPOSE 80/tcp
RUN tar xf $root$pkgname
CMD nginx -g "daemon off;"

第二步:构建镜像

╭─root@du-z /nginx  
╰─➤  docker build -t nginx:v1 .

第三步:查看

# docker image ls
# docker history nginx:v1

Docker --Dockerfile(制作镜像)第1张

免责声明:文章转载自《Docker --Dockerfile(制作镜像)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS 伪类选择器校园日常(持续更新中)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Composer 更换为国内镜像源(Packagist 镜像)

安装lavavel步骤: 安装composer (需要开启php_openssl扩展,否则报错) (https://getcomposer.org/) 到github下载laravel的最新发行版 (https://github.com/laravel/laravel/releases) 把下载的laravel-*.zip 解压缩到项目目录 通过comp...

nginx实战三

nginx正向代理https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/z_proxy.md   Nginx正向代理使用场景并不多见。 需求场景1: 如果在机房中,只有一台机器可以联网,其他机器只有内网,内网的机器想用使用yum安装软件包,在能能联网的机器上配置一个正向代理即可。...

HTTP方式播放FLV/mp4 :nginx+Yamdi/MP4BOX

【导语】chrome浏览器确实很强,直接支持MP4拖动播放,对于其他播放器,可以使用以下方法来支持拖动播放。拖动的关键在于生成关键帧等元数据信息,便于服务器和播放器支持拖动。 另外,nginx web服务器体验起来,也是很有前途的一个web服务器,值得研究。 flv 视频可以采用两种方式发布: 一、普通的 HTTP 下载方式 二、基于 Flash Medi...

Docker集成Jenkins自动化部署SpringBoot-Jenkins自动化部署SpringBoot到Docker(转)

原文:http://www.html580.com/study/247.html springboot源码测试例子 https://gitee.com/html580/boot 一、Docker集成Jenkins自动化部署SpringBoot 1.使用docker 安装jenkinsdocker run -p 8080:8080 -p 50000:5000...

docker配置容器运行jar包

拉取jdk镜像文件 # docker pull huanwei/alpine-oraclejdk8 创建文件夹编写Dockerfile文件 # mkdir docker # vi Dockerfile FROM docker.io/huanwei/alpine-oraclejdk8 MAINTAINER djl "djl@cnbisoft.com"ENV...

nginx rewrite重写规则集合

本文根据网络搜索整理,不是原创 一.正则表达式匹配,其中: ~为区分大小写匹配 ~*为不区分大小写匹配 !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 . 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线或汉字 s 匹配任意的空白符 d 匹配数字 匹配单词的开始或结束 ^匹配字...