使用Dockerfile构建镜像
序号 | 指令 | 描述 |
1 | FROM | 格式:FROM <image>或FROM <image>:<tag> 第一条指令必须是FROM指令。 如果在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。(每个镜像一次) |
2 | MAINTAINER | 指定维护者信息,格式为MAINTAINER <name> |
3 | RUN | 格式:RUN <command>或RUN <"executable","param1","param2">。 RUN <command>将在shell终端中运行命令,即/bin/sh -c RUN <"executable","param1","param2">使用exec执行。例如:RUN ["/bin/bash","-c","echo hello"] 每条RUN指定将在当前镜像基础上执行指定命令,并接交为新的镜像。当命令较时可以使用\来换行。 |
4 | CMD | 支持三种格式: CMD ["executable","param1","param2"]使用exec执行,推荐方式。 CMD command param1 param2 在/bin/sh中执行,提供给需要交互的应用。 CMD ["param1","param2"]提供给ENTRYPOINT的默认参数。 指定启动容器时执行的命令,每个Dockerfile只能有一个CMD命令。 如果指定了多条命令,只有最后一条会被执行。 如果用户启动容器时候指定了运行的命令,则会覆盖掉CMD指定的命令。 |
5 | EXPOSE | 格式:EXPOSE <port> [<port>...],例:EXPOSE 22 80 443 告诉Docker服务器容器暴露的端口号,供互联系统使用。它并非是容器真正的端口,在启动容器时需要使用-P或-p进行指定。 |
6 | ENV | 格式:ENV <key> <value> 指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。 |
7 | ADD | 格式:ADD <src> <dest> 复制指定的<src>到容器的<dest>,其中<src>可以是Dockerfile所在目录的一个相对路径(文件或目录),也可以是一个URL,还可以是一个tar文件(自动解压) |
8 | COPY | 格式:COPY <src> <dest> 复制本地主机的<src>(Dockerfile所在目录的相对路径,文件或目录)为容器中的<dest>,目标路径不存在时,会自动创建。 |
9 | ENTRYPOINT | 有两种格式: ENTRYPOINT ["executable","param1","param2"] ENTRYPOINT command param1 param2 (shell中执行) 配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。 每个Dockerfile中只能有一个ENTRYPOINT,当指定多个ENTRYPOINT时,只有最后一个生效。 |
10 | VOLUME | 格式:VOLUME ["/data"] 创建一个可以从本地主机或其它容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。 |
11 | USER | 格式:USER daemon 指定运行容器时用户名或UID,后续的RUN也会使用指定用户。 当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户。 |
12 | WORKDIR | 格式:WORKDIR /path/to/workdir 为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。 可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例: WORKDIR /a WORKDIR b WORKDIR c RUN pwd 最终路径为/a/b/c |
13 | ONBUILD | 格式:ONBUILD [INSTRUCTION] 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令。 |
--build-arg=[] :设置镜像创建时的变量;
--cpu-shares :设置 cpu 使用权重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配额;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的内存 id;
--disable-content-trust :忽略校验,默认开启;
-f :指定要使用的Dockerfile路径;
--force-rm :设置镜像过程中删除中间容器;
--isolation :使用容器隔离技术;
--label=[] :设置镜像使用的元数据;
-m :设置内存最大值;
--memory-swap :设置Swap的最大值为内存+swap,"-1"表示不限swap;
--no-cache :创建镜像的过程不使用缓存;
--pull :尝试去更新镜像的新版本;
-q :安静模式,成功后只输出镜像ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t,镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag
# cat Dockerfile-ssh
FROM centos
MAINTAINER eivll0m@163.com ENV ROOT_PASSWD passwd RUN yum -y install openssh-server
RUN echo $ROOT_PASSWD |passwd --stdin root RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key CMD ["/usr/sbin/sshd","-D"]
EXPOSE 22
# cat Dockerfile-wordpress
FROM centos:6.9
MAINTAINER eivll0m@163.com RUN yum -y install httpd php php-gd php-mysql mysql mysql-server
ENV MYSQL_ROOT_PASSWD 123456 RUN echo "<?php phpinfo()?>" > /var/www/html/index.php
ADD start.sh /start.sh
RUN chmod +x /start.sh #ADD wordpress-4.7.4-zh_CN.tar.gz /var/www/html VOLUME ["/var/lib/mysql"] CMD /start.sh EXPOSE 80 3306
# cat Dockerfile-tomcat
FROM centos:6.9
MAINTAINER eivll0m@163.com ADD jdk-8u73-linux-x64.tar.gz /app ENV JAVA_HOME /app/jdk1.8.0_73 ADD apache-tomcat-7.0.56.tar.gz /app WORKDIR /app/apache-tomcat-7.0.56 ENTRYPOINT ["bin/catalina.sh","run"] EXPOSE 8080 #build
#docker build -t tomcat:v1 -f ./Dockerfile-tomcat ./
#run
#docker run -d --name tomcat-8080 -p 8080:8080 tomcat:v1
使用Dockerfile构建镜像的更多相关文章
- 使用Dockerfile构建镜像-Docker for Web Developers(5)
1.理解Dockerfile语法 语法命令 命令功能 举例 FROM 所有的dockerfile都必须以FROM命令指定镜像基于哪个基础镜像来制作 FROM ubuntu:14:04 MAINTAIN ...
- Docker容器学习梳理 - Dockerfile构建镜像
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- 013、Dockerfile构建镜像(2019-01-02 周三)
参考https://www.cnblogs.com/CloudMan6/p/6830067.html Dockerfile构建镜像过程分析 root@docker-lab:~/111# ls ...
- Dockerfile构建镜像
Dockerfile构建镜像的步骤: 从基础镜像运行一个容器 执行一条指令,对容器做出修改 执行类似docker commit的操作,提交一个新的镜像层 再基于刚提交的镜像运行一个新的容器 执行Doc ...
- Dockerfile 构建镜像
一.使用dockerfile构建镜像 基本结构: a.设置基础镜像 当前镜像继承于的基础镜像 FROM centos:latest b.设置维护者信息 没有固定格式 c.设置需要添加到容器中的文件 ...
- Dockerfile构建镜像实战
目录 一.常见Dockerfile指令 二.编写Centos Dockerfile 2.1.编写Dockerfile 2.2.构建 2.3.查看Docker镜像 2.4.运行镜像 三.CMD和ENTR ...
- Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)
Dockerfile 是一个文本文件,记录了镜像构建的所有步骤. 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 dock ...
- docker(四) 使用Dockerfile构建镜像
下面以一个例子来演示构建镜像的过程. #在/tmp目录下演示 cd tmp mkdir build-redis-image 1.创建Dockerfile文件 vim Dockerfile 并写入如下内 ...
- Docker build Dockerfile 构建镜像 - 二
Dockerfile 制作镜像 https://hub.docker.com/ 搜索需要镜像: https://hub.docker.com/_/centos/ 官方示例: centos:6 1.这里 ...
- docker:(2)通过Dockerfile构建镜像并发布web项目
上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html 虽然通过修改获取到的镜像可以达到使用目的,但是多操作几次就会发 ...
随机推荐
- Centos7安装docker-compse踩过的坑
一.概要 本文,我们介绍如何在centos7环境下安装docker-compose, 记录下安装过程步骤以及遇到的问题还有解决办法. 二.安装方式 1.官方安装方式 sudo curl -L ht ...
- [国嵌攻略][153][I2C裸机驱动设计]
eeprom简介 eeprom电可擦除可编程只读存储器,是一种类似于flash的固态存储器,但是与flash相比又存在一些区别: 1.eeprom可以按位擦写,而flash只能大片擦除. 2.eepr ...
- RSA关于加密长度限制的解决办法
RSA关于加密长度限制的解决办法 因为rsa采用分块进行加密的,所以有长度限制.如果加密信息较多,可分段加解密(不建议对大量信息rsa加密,效率低效): 正常加密情形如下: public ...
- 从零开始学习前端JAVASCRIPT — 2、JavaScript基础ES5
1:ES5简介 ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准的修正. 与HTML5规范进程本质类似,ES5通过对现有JavaScript ...
- jQuery:下拉列表的联动
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- mysql之repair table 修复表札记
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REP ...
- 月薪20k以上的高级程序员需要学习哪些技术呢?
课程内容: 源码分析.分布式架构.微服务架构.性能优化.团队协作效率.双十一项目实战 适用对象: 1-5年或更长软件开发经验,没有工作经验但基础非常扎实,对java工作机制,常用设计思想,常用java ...
- maven配置文件详解
settings.xml 本篇文章主要对maven中setting.xml配置文件进行解释 1.声明规范 <settings xmlns="http://maven.apache.or ...
- js 获取url链接的任意参数
<script> //先获取 当前的url链接 var url = location.href; //把url 链接切割为数组 var arr = url.split("&quo ...
- python正则表达式re模块详细介绍
转自:http://www.jb51.net/article/50511.htm 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这 ...