(转)Docker入门——Dockerfile详解
转:https://www.cnblogs.com/sorex/p/6481407.html
基本示例
# This is a commit
FROM alpine:3.2
MAINTAINER Jasper Xu <sorex@163.com>
RUN apk update && apk add socat && rm -r /var/cache/
RUN chmod -R 755 /data
ADD execfile /etc/execfile
ADD data/* /etc/data/
COPY xxx.tgz /home/xxx.tgz
RUN chmod 755 /etc/execfile
RUN ["/etc/execfile", "arg1", "arg1"]
ENV abc=hello
VOLUME ["/data"]
EXPOSE 8080
WORKDIR /data/tools
CMD service nginx start
CMD echo "Hello docker!"
FROM
必须为第一个命令,指定基础镜像
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
FROM mysql:5.6
MAINTAINER
维护者信息
MAINTAINER <name>
MAINTAINER Jasper Xu
MAINTAINER sorex@163.com
MAINTAINER Jasper Xu <sorex@163.com>
LABEL
给镜像添加信息。使用docker inspect可查看镜像的相关信息
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
RUN
构建镜像时执行的命令
# 由shell启动,Linux默认为`/bin/sh -c`,Windows默认为`cmd /S /C`
RUN <command>
# 运行可执行文件
RUN ["executable", "param1", "param2"]
RUN apk update
RUN ["/etc/execfile", "arg1", "arg1"]
ADD
将本地文件添加到容器中,identity, gzip, bzip2,xz,tar.gz,tgz等类型的文件将被添加tar -x命令,进行解压
ADD <src>... <dest>
ADD ["<src>",... "<dest>"] 用于支持包含空格的路径
ADD hom* /mydir/ # 添加所有以"hom"开头的文件
ADD hom?.txt /mydir/ # ? 替代一个单字符,例如:"home.txt"
ADD test relativeDir/ # 添加 "test" 到 `WORKDIR`/relativeDir/
ADD test /absoluteDir/ # 添加 "test" 到 /absoluteDir/
COPY
同ADD,只是不会解压文件。
CMD
构建容器后调用,也就是在容器启动时才进行调用。
CMD ["executable","param1","param2"] (执行可执行文件,优先)
CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)
CMD command param1 param2 (执行shell内部命令)
CMD echo "This is a test." | wc -
CMD ["/usr/bin/wc","--help"]
ENTRYPOINT
配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先)
ENTRYPOINT command param1 param2 (shell内部命令)
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
当启动容器后,你将直接看到相当于运行了top -b -c
要进一步查看,你可以直接使用命令docker exec -it test ps aux
相当于使用了docker exec top -b -it test ps aux
ENV
设置环境变量
ENV <key> <value>
ENV <key>=<value> ...
ENV myName="John Doe" myDog=Rex\ The\ Dog \
myCat=fluffy
等同于
ENV myName John Doe
ENV myDog Rex The Dog
ENV myCat fluffy
EXPOSE
指定于外界交互的端口,在容器启动时用-p传递参数,例如-p 3307:3306将容器内的3306绑定到本机的3307
EXPOSE <port> [<port>...]
EXPOSE 80 443
EXPOSE 8080
VOLUME
用于指定持久化目录,在容器启动时用-v传递参数,例如-v ~/opt/data/mysql:/var/lib/mysql将本机的~/opt/data/mysql和容器内的/var/lib/mysql做持久化关联
容器启动时会加载,容器关闭后会回写。
VOLUME ["/data"]
VOLUME ["/data"]
VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]
WORKDIR
工作目录
WORKDIR /path/to/workdir
WORKDIR /a (这时工作目录为/a)
WORKDIR b (这时工作目录为/a/b)
WORKDIR c (这时工作目录为/a/b/c)
USER
用于设定容器的运行用户名或UID,USER 123或USER git。RUN, CMD and ENTRYPOINT都将用该用户执行。
ARG
由外部启动时必须传入的参数,在容器启动时用--build-arg传递参数
指定于外界交互的端口,在容器启动时用-p传递参数,例如--build-arg CONT_IMG_VER=v2.0.1
FROM ubuntu
2 ARG CONT_IMG_VER
3 ENV CONT_IMG_VER ${CONT_IMG_VER:-v1.0.0}
4 RUN echo $CONT_IMG_VER
有些默认参数,无需指定,也不用使用``传递,可直接传参HTTP_PROXY,http_proxy,HTTPS_PROXY,https_proxy,FTP_PROXY,ftp_proxy,NO_PROXY,no_proxy
(转)Docker入门——Dockerfile详解的更多相关文章
- docker容器dockerfile详解
docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...
- Docker:DockerFile详解与实例
基本结构 Dockerfile 由一行行命令语句组成,并且支持已 # 开头的注释行. 一般而言,Dockerfile 的内容分为四个部分: 基础镜像信息. 维护者信息. 镜像操作指令. 容器启动时执行 ...
- Dockerfile详解
Dockerfile详解 利用Dockerfile文件,可以构建docker的image镜像 命令使用 通过-f参数指定Dockerfile路径,进行构建image docker build -f / ...
- Dockerfile详解及优化
Dockerfile详解 0. Dockerfile的作用 docker可以根据Dockerfile中的指令来构建docker镜像.Dockerfile是一个文本文件,其应当包含用户想要构建一个镜像的 ...
- 附005.Docker Compose文件详解
一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...
- 【转】Dockerfile详解
Dockerfile详解 https://blog.csdn.net/wo18237095579/article/details/80540571 --------------------- 作者:大 ...
- java 日志体系(三)log4j从入门到详解
java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...
- (十八)整合Nacos组件,环境搭建和入门案例详解
整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...
- Docker常用命令详解
docker ps 查看当前正在运行的容器 docker ps -a 查看所有容器的状态 docker start/stop id/name 启动/停止某个容器 docker attach id 进入 ...
随机推荐
- 协程分析之context上下文切换
协程现在已经不是个新东西了,很多语言都提供了原生支持,也有很多开源的库也提供了协程支持. 最近为了要给tbox增加协程,特地研究了下各大开源协程库的实现,例如:libtask, libmill, bo ...
- 关于Python的10大实用编程技巧
Python 是一种通用的脚本开发语言,比其他编程语言更加简单.易学,其面向对象特性甚至比Java.C#..NET更加彻底,因此非常适合快速开发. Python 已经成为最受欢迎的程序设计语言之一 ...
- [Python3 填坑] 014 类的常用魔术方法举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...
- Unable to load dynamic library 'zip.so' on Centos 6.8 useing php7.3
背景: Centos6.8服务器升级php版本,从7.1升级到7.3,常用扩展都安装完成之后,报:Class 'ZipArchive' not found.一看就是zip扩展没有,需要手动安装了. 中 ...
- let/const及块级作用域
本系列是在平时阅读.学习.实际项目中有关于es6中的新特性.用发的简单总结,目的是记录以备日后温习:本系列预计包含let/const.箭头函数.解构.常用新增方法.Symbol.Set&Map ...
- 【五一qbxt】day4 数论知识
这些东西大部分之前都学过了啊qwq zhx大概也知道我们之前跟着他学过这些了qwq,所以: 先讲新的东西qwq:(意思就是先讲我们没有学过的东西) 进制转换 10=23+21=1010(2) =32+ ...
- [Bzoj1030][JSOI2007]文本生成器(AC自动机&dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1030 最最最常见的多串匹配问题!题目求至少包含一个子串的方案数,则可以转化成全部方案-不 ...
- C#设计模式:组合模式(Composite Pattern)
一,C#设计模式:组合模式(Composite Pattern) using System; using System.Collections.Generic; using System.Linq; ...
- Linux学习笔记2-CentOS7安装tomcat8
1.下载tomcat:apache-tomcat-8.5.16.tar.gz 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat ...
- Python中字符串的格式化
字符串的格式化 格式化是对字符串进行格式表示的方式.使用槽({})按顺序格式化字符串. 格式化方式 <模板字符串>.format(<逗号分割参数>) "{ }:计算机 ...