Docker镜像与仓库(二)Dockerfile
Docker镜像文件与仓库(二)
Docker镜像文件与仓库(二)
Dockerfile指令
Dockerfile格式:
1.#Comment注释
2.INSTRUCTION大写的指令名 argument参数
- FROM
1.FROM <image>
2.FROM <image>:<tag>
3.#通过FROM指定的镜像名都必须是已经存在的镜像,这个镜像叫做基础镜像,而且必须是第一条非注释指令
- MAINTAINER
1.MAINTAINER <name>
2.#指定镜像的作者信息,包含镜像的所有者和联系信息
- RUN
1.#指定当前镜像中运行的命令
2.RUN <command> (shell模式)
3. /bin/sh -c command
4. 比如 RUN echo hello
5.RUN ["executable","param1","param2"] (exec模式)
6. 比如 RUN ["/bin/bash","-c","echo hello"]
- EXPOSE
1.EXPOSE <port> [<port>...]
2.#指定运行该镜像文件的容器使用的端口,但是我们在运行容器的时候仍然要指定端口,因为dockerfile写的端口只是为了告诉docker这个容器在运行的时候可能会使用哪些端口
3.docker run -p 80 -d test nginx -g "daemon off;"
- CMD
1.CMD ["executable","param1","param2"] (exec模式)
2.CMD command param1 param2 (shell模式)
3.CMD ["param1","param2"] (作为ENTRYPOINT指令的默认参数)
4.#CMD指令是用来指定容器启动时的默认情况
- ENTRYPOINT
1.ENTRYPOINT ["executable","param1","param2"] (exec模式)
2.ENTRYPOINT command param1 param2 (shell模式)
3.#CMD能被覆盖,而ENTRYPOINT不会
- ADD
1.ADD <src>...<dest>
2.ADD ["<src>"..."<dest>"] (适用于文件路径中有空格的情况)
- COPY
1.COPY <src>...<dest>
2.COPY ["<src>"..."<dest>"] (适用于文件路径中有空格的情况)
ADD vs. COPY:
- ADD包含类似tar的解压功能
如果单纯复制文件,Docker推荐使用COPY
- VOLUME
1.VOLUME ["/data"]
2.#卷,对于文件共享来说
- WORKDIR
1.WORKDIR /path/to/workdir
2.#为后面的指令指定工作目录
- ENV
1.ENV <key> <value>
2.ENV <key>=<value> ...
3.#用来设置环境变量
- USER
1.USER daemon
2.#指定镜像文件为什么样的用户运行
3. USER user
4. USER user:group
5. USER user:gid
6. USER uid
7. USER uid:gid
8. USER uid:group
9.#默认使用root用户
- ONBUILD
1.ONBUILD [INSTRUCTION]
2.#能够为镜像添加触发器
3.#当一个镜像被其他镜像作为基础镜像时执行
4.#会在构建过程中插入指令
Dockerfile构建过程
- 从基础镜像运行一个容器
- 执行一条指令,对容器做出修改
- 执行类似docker commit的操作,提交一个新的镜像层
- 再基于刚提交的镜像层运行一个新容器
- 执行Dockerfile中的下一条指令,直至所有指令执行完毕
使用中间层镜像进行调试的好处:
查找错误
构建缓存:能使下一次启动时速度加快
如果想不使用缓存:docker build --no-cache
对Dockerfile进行修改,然后启动的时候就从修改的地方开始刷新缓存
查看镜像构建的过程:docker history [image]
Docker镜像与仓库(二)Dockerfile的更多相关文章
- 第四章 使用Docker镜像和仓库(二)
第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...
- Docker基本命令与使用 —— Docker镜像与仓库(二)
一.查看和删除镜像 1.Docker Image 镜像 容器的基石 层叠的只读文件系统 联合加载(union mount) (存储位置 /var/lib/docker) docker info 2.列 ...
- 第四章 使用Docker镜像和仓库
第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...
- Docker镜像与仓库(一)
Docker镜像与仓库(一) Docker镜像与仓库(一) 如何查找镜像? Docker Hub https://registry.hub.docker.com docker search [OPTI ...
- 04_Docker入门(下)之docker镜像和仓库的使用
docker镜像和仓库 镜像介绍 docker镜像是由文件系统叠加而成的.最低端是一个引导文件系统,即bootfs.当一个容器启动后,它会将被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存以 ...
- Docker之- 使用Docker 镜像和仓库
目录 使用Docker 镜像和仓库 什么是 Docker 镜像 列出 Docker 镜像 tag 标签 Docker Hub 拉取镜像 查找镜像 构建镜像 创建Docker Hub 账号 使用 Doc ...
- docker镜像的仓库
一.docker镜像的仓库 --- repos-registry的创建: 仓库分为公共仓库和私有仓库 DockerHub的官方仓库 https://hub.docker.com DockerPool社 ...
- Docker镜像的仓库及底层依赖的核心技术(3)
一.docker镜像的仓库 仓库分为公共仓库和私有仓库 DockerHub的官方仓库:https://hub.docker.com DockerPool社区仓库:https://dl.dockerpo ...
- docker镜像与仓库
1.docker image 镜像 容器的基石 层叠的只读文件系统 联合加载(union mount) 2.镜像存储地址 /var/lib/docker 3.镜像操作 列出镜像 镜像标签和仓库 查 ...
随机推荐
- Time Out 访问数据库超时处理 .NET
using System.Reflection; using System.Data.SqlClient; TransactionSelectTableAdapter adapter = new Tr ...
- IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案
原来是IE会把页面中的元素id可以直接当变量名一样使用,但是这个id变量不能被赋值. 例如: <body id='body'> <script type="text/jav ...
- JavaScript input type=file 获取文件大小及类型限制
<input name="txtName" type="file" id="pic" onchange="loadImage ...
- iOS开发--系统通讯录的访问与添加联系人
公司项目有访问通讯录的需求,所以开始了探索之路.从开始的一无所知,到知识的渐渐清晰.这一切要感谢广大无私分享的 “coder”,注:我是尊称的语气! 苹果提供了访问系统通讯录的框架,以便开发者对系统通 ...
- php 垃圾回收机制----写时复制和引用计数
PHP使用引用计数和写时复制来管理内存.写时复制保证了变量间复制值不浪费内存,引用计数保证了当变量不再需要时,将内存释放给操作系统. 要理解PHP内存管理,首先要理解一个概念----符号表. 符号表的 ...
- Oracle EBS-SQL (WIP-12):总装车间任务查询.sql
select WT.WIP_ENTITY_NAME 任务名 ...
- 支持SMTP邮箱介绍
126邮箱:POP:POP.126.comSMTP:SMTP.126.comhttp://mail.126.com/help/client_04.htm 163邮箱:POP:pop.163.comSM ...
- Android 为应用添加数字角标
今天在论坛上看到了一个帖子,终于搞清了我很久以来的一个困惑,android到底能不能实现ios的角标效果,QQ是怎么实现的.看了这个帖子顿时终于解除了我的困惑. 先说一个下大概的思路: 大家都知道an ...
- zookeeper watch 节点
zjtest7-redis:/root/zk# cat a1.pl use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; use IO::Soc ...
- GDB单步调试程序
linux下gdb单步调试 用 GDB 调试程序 GDB 概述———— GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 ...