Linux----------容器docker file

目录

  • 一、Docker file
  • 二、docker build
  • 三、Docker File体系结构

一、Docker file

如果你想要从一个基础镜像开始建立一个自定义镜像,可以选择一步一步进行构建,也可以选择写一个配置文件,然后一条命令(docker build)完成构建,显然配置文件的方式可以更好地应对需求的变更,这个配置文件就是Dockerfile。

Dockerfile其实可以看做一个命令集。每行均为一条命令。每行的第一个单词,就是命令command。后面的字符串是该命令所要接收的参数。比如ENTRYPOINT /bin/bash。ENTRYPOINT命令的作用就是将后面的参数设置为镜像的entrypoint。

二、docker build

docker build?命令用于使用 Dockerfile 创建镜像。

语法:docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
--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 :尝试去更新镜像的新版本;
--quiet, -q :安静模式,成功后只输出镜像 ID;
--rm :设置镜像成功后删除中间容器;
--shm-size :设置/dev/shm的大小,默认值是64M;
--ulimit :Ulimit配置。
--tag, -t:?镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
--network:?默认 default。在构建期间设置RUN指令的网络模式

三、Docker File体系结构

Docker File体系结构:
FROM                        基础镜像,当前新镜像是基于哪个镜像的
MAITAINER               镜像维护者的姓名和邮箱地址
RUN                           容器构建时需要运行的命令
EXPOSE                    当前容器对外暴露出的端口
WORKDIR                 指定在创建容器后,终端默认登录的进来工资目录,一个落脚点
ENV                           用来构建镜像过程中设置环境变量
ADD                           将宿主机目录下的文件拷贝进镜像且ADD命令会自动出来URL和解压tar压缩包
CPTY                         类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录的文件或目录复制到新的一层的镜像的位置
VOLUME                    容器数据卷,用于数据保存和持久化工作
CMD                           指定一个容器时要运行的命令,可以有多个,但就最后一个生效,CMD会被docker run后的参数替换
ENTRYPOINT            指定一个容器启动时要运行的命令,目的和CMD一样,都是在指定容器启动程序及参数
ONBUILD                   当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

示例:

# Runner container
FROM registry.cn-hangzhou.aliyuncs.com/aliware2018/debian-jdk8

COPY --from=builder /root/workspace/services/mesh-provider/target/mesh-provider-1.0-SNAPSHOT.jar /root/dists/mesh-provider.jar
COPY --from=builder /root/workspace/services/mesh-consumer/target/mesh-consumer-1.0-SNAPSHOT.jar /root/dists/mesh-consumer.jar
COPY --from=builder /root/workspace/agent/mesh-agent/target/mesh-agent-1.0-SNAPSHOT.jar /root/dists/mesh-agent.jar

COPY --from=builder /usr/local/bin/docker-entrypoint.sh /usr/local/bin
COPY start-agent.sh /usr/local/bin

RUN set -ex && mkdir -p /root/logs

ENTRYPOINT ["docker-entrypoint.sh"]

原文地址:https://www.cnblogs.com/wangchengshi/p/11378645.html

时间: 2024-11-09 03:35:20

Linux----------容器docker file的相关文章

Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】

转自:http://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-deployment 英文原文:Docker: Lightweight Linux Containers for Consistent Development and Deployment 使用Docker容器——轻量灵活的VM同类,来接管“依赖地狱”.学习Docker是如何基于LXC技术,通过把应用

Linux 容器技术史话:从 chroot 到未来

Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术.不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统.容器们共享宿主机的(host)操作系统内核,并使用访客操作系统的系统库来提供所需的功能.由于不需要专用的操作系统,因此容器要比虚拟器启动快得多. Virtual Machines Vs Containers (图片来自: Docker Inc.) 转载于:http://www.itxuexiwang.com/a/liunxji

通过 Linux 容器进行虚拟化

简介 Linux 容器是一种轻量级"虚拟化"方法,用于在单个控制主机上同时运行多个虚拟装置(容器).另一个可用来描述 Linux 容器所执行的操作的术语是"容器化". Linux 容器提供操作系统级别的虚拟化,其中的内核控制隔离的容器.容器通过内核控制组 (cgroup) 和内核命名空间进行隔离.通过 Xen 和 KVM 等其他完整虚拟化解决方案,虚拟化子系统可模拟完整的硬件环境. Apache Web 服务器就是一个 Linux 容器使用案例.通过 Xen 或 K

使用VS把ASP.NET 5的应用发布到Linux的Docker上

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:我相信未来应用程序的部署模式首选一定会是Docker,所以.NET社区的朋友也不应该忽视这一趋势.今天推荐的文章就是微软大牛Hanselman讲解如何使用Visual Studio 2015来把ASP.NET 5的应用程序发布到运行在Linux的Docker上. Scott Hanselman首先简单介绍了虚拟机和Docker(容器技术)的区别,也提到Windows即将提供Docker. 随后

.NET程序在Linux容器中的演变

原文链接:https://dzone.com/articles/the-evolution-of-a-linux-container 现在,.NET开发人员可以无障碍地使用如Docker这样的Linux容器,那么让我们来尝试如何以正确的方式配置一个容器. 可能,文章的标题改成"Linux容器开发人员的演变"会更好.由于.NET可在Linux(以及Windows和macOS)上运行,所以整个世界的Linux容器和微服务已经开放给了.NET开发人员. 有着大量的开发人员,长期的运行记录和优

浅谈Linux容器和镜像签名

导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大约在三年半前开展基于镜像的容器相关工作.到目前为止,我已经容器化了大量应用.我了解到什么是现实情况,什么是迷信.今天,我想简要介绍一下 Linux 容器是如何设计的,以及谈谈镜像签名. Linux 容器是如何设计的 对于基于镜像的 Linux 容器,让大多数人感到困惑的是,它把操作系统分割成两个部分

在Azure中运行Linux容器ASP.NET 5 跨平台应用程序

在之前一篇的博客中,介绍了如何通过Virtual Studio 2015的Docker扩展工具直接发布ASP.NET应用程序到Azure公有云中的Windows Server 2016 TP3的Windows容器中,这个并不难理解,毕竟Windows 服务器内核就是Windows运行.NET应用程序是必须的:不过这里的伏笔是ASP.NET 5(vNEXT)的开源项目中具备通过DNX(.NET Execution Environment运行环境)将Bootstrap .NET应用程序的编译系统,S

开源Linux容器 OpenVZ 快速上手指南

Linux 容器及OpenVZ 简介 OpenVZ 安装 安装内核镜像 配置sysctl 以及安装相关工具 重启至OpenVZ 内核 简单上手 下载预先准备的模板也可以称作镜像 创建以及配置容器信息 开始运行以及使用 Linux 容器及OpenVZ 简介 Linux 容器(Linux Container,LXC)是一种轻量级的虚拟运行环境,它与传统的虚拟机方 式不同.传统的虚拟机需要对硬件作出抽象并提供了一个完整的操作系统,而LXC 不同的 地方就是,多个容器都与系统共用一套内核机制,而容器中提

大型网站技术-3. 容器Docker与kubernetes

大型网站技术基石篇-容器Docker与kubernetes Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/Xen这类)不同的是,Docker不会提供一整个操作系统,他能提供隔离的程序运行环境.对一个应用来说这已经够了. Kubernetes是Google的一个开源容器管理项目,他能利用Docker/其他技术部署/管理容器集群.   Docker          项目地址:https://www.docker

虚拟机和容器docker

云计算中最主要的技术就是虚拟机,开源虚拟机已经kvm已经集成到Linux内核!针对虚拟机浪费资源(CPU.内存.存储等)较大的缺陷,google力推Docker容器和容器管理平台Kubernetes. KVM:就是Keyboard Video Mouse的缩写.KVM 交换机通过直接连接键盘.视频和鼠标 (KVM) 端口,让您能够访问和控制计算机.KVM 提供真正的主板级别访问,并支持多平台服务器和串行设备.(我在机房看到过...)百科 1)虚拟机 通过软件把一台计算机虚拟出好多台计算机,每台虚