当前位置:首页 > CN2资讯 > 正文内容

Linux docker部署 hdfs linux dockerfile

11小时前CN2资讯

目录

  • 一、Docker file
  • 1.1 docker原理
  • 1.2 docker file执行流程
  • 1.3 docker file注意事项
  • 二、docker build
  • 三、Docker File体系结构
  • 四、容器间传递共享

一、Docker file

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

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

1.1 docker原理

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分布代表软件的三个不同阶段:

  • Dockerfile是软件的原材料
  • Docker镜像是软件的交付品
  • Docker容器则可以认为是软件的运行态
    Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。

原理图如下:

1.Dockerfile,需要定义一个Dockerfile,Dockerfile定义了进程需要的一切东西。Dockerfile涉及的内容包括执行代码或者是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程当交道,这时需要考虑如何设计namespace的权限控制)等等
2.Docker镜像,在用Dockerfile定义一个文件之后,docker build时会产生一个Docker镜像,当运行Docker镜像时,会真正开始提供服务
3.Docker容器,容器是直接提供服务的

1.2 docker file执行流程

docker file执行流程: 1.docker从基础镜像运行一个容器 2.执行一条指令并对容器作出修改 3.执行类似docker commit的操作提交一个新的镜像层 4.docker再基于刚提交的镜像运行一个新容器 5.执行dockerfile中的下一条指令直到所有指令都执行完成

1.3 docker file注意事项

dockerfile注意事项: 1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2.指令按照从上到下,顺序执行 3. #表示注释 4.每条指令都会创建一个新的镜像层,并对镜像进行提交

二、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指令的网络模式 --volumes-from示例: docker build -f /docker/dockerfile1 -t wang/centos . (.是必备) docker run -it --name dc02 --volumes-from dc01 wang/centos

三、Docker File体系结构

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

示例1:

# Runner container FROM /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 /usr/local/bin RUN set -ex && mkdir -p /root/logs ENTRYPOINT ["docker-entrypoint.sh"]

示例2:GitHub上的centos的dockerfile源码

FROM scratch MAINTAINER The CentOS Project <[email protected]> ADD c68-docker.tar.xz / LABEL name="CentOS Base Image" \ vendir="CentOS" \ license="GPLv2" \ build-date="2016-06-02" # Default command CMD ["/bin/bash"]

四、容器间传递共享

  • 先启动一个父容器dc01
    docker build -f /docker/dockerfile1 -t wang/centos . (.是必备)
  • 再启动dc02、dc03继承自dc01,并创建文件
    docker run -it --name dc02 --volumes-from dc01 wang/centos
    docker run -it --name dc02 --volumes-from dc01 wang/centos
    touch a.txt
  • 回到dc01 可以看到02/03各自添加的都能共享了
    docker attach dc01
    ll 查看
  • 删除dc01,dc02修改后,dc03可否访问
    docker rm -f dc01
    docker rm -f dc02
    docker attach dc 03
    ll 查看
  • 新建dc04继续dc03再删除dc03
    docker run -it --name dc04 --volumes-from dc03 wang/centos
    docker rm -f dc03
    docker attach dc04
    ll 查看

&&容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25911.html

    分享给朋友:

    “Linux docker部署 hdfs linux dockerfile” 的相关文章

    境外VPS搭建服务指南:如何选择最适合的VPS提升网站与业务性能

    网站建设与个人博客 境外VPS是搭建网站和个人博客的理想选择。对于初学者来说,选择价格实惠的VPS主机可以作为一个很好的练手机会。像RackNerd、EthernetServers、CloudCone和HostEONS这样的提供商,提供年付低至9美元的VPS服务,非常适合预算有限但又想尝试网站搭建的...

    获取最佳VPS优惠码的终极指南

    VPS优惠概述 在当今数字化时代,虚拟专用服务器(VPS)成为许多人理想的选择。VPS是一种能提供比共享主机更高性能、更多自主控制权的网络托管方式。对于个人和企业用户来说,使用VPS无疑能提升网站的加载速度以及平台的稳定性。它的高级配置和灵活性,为用户在资源管理上提供了极大的便利。 VPS的优势体现...

    Host Winds:可再生能源的关键因素与未来发展潜力

    什么是 Host Winds? 在谈论可再生能源时,Host Winds 是一个不容忽视的概念。简单来说,Host Winds 指的就是那些发生在某一特定区域内的风速和风向。这些风的模式能够极大地影响一个地区的风力发电潜力。想象一下,如果你在一个风速稳定且方向一致的地区,那么利用这些风来发电就会更加...

    Vultr DD Windows安装教程:轻松一步到位

    在云计算越来越流行的今天,Vultr作为一个强大的云服务提供商,吸引了大量用户。对于想在Vultr服务器上安装Windows的用户来说,使用DD命令是一种非常便利的方法。接下来,我将为你详细介绍如何通过这一方式在Vultr上安装Windows。 1.1 使用DD命令直接安装Windows 1.1.1...

    阿里云国际市场分析与推广策略

    阿里云在全球范围内的定位是尤为引人注目的。作为阿里巴巴集团的重要组成部分,阿里云不仅仅是一个云计算服务提供商,更是全球数字经济的重要推动者。它的目标是为全球客户提供可靠且高效的云计算服务,帮助不同规模的企业快速实现数字化转型。通过在不同区域建立数据中心,阿里云力求为用户提供低延迟、高可用性的服务体验...

    探索阿什本:宜居城市的魅力与投资机会

    阿什本,这个名字在许多人心中可能还有些陌生,但当我深入了解这座城市后,它的魅力让我印象深刻。阿什本位于美国弗吉尼亚州,地处华盛顿特区的北部,交通十分便利。这里有着典型的温带气候,四季分明,春天的樱花、夏天的绿荫、秋天的枫叶和冬天的雪景,各自展现着不同的美丽。这样的气候条件使得阿什本不仅是一个宜居的地...