容器

duckerfile文件

那年仲夏 提交于 2020-01-21 00:22:57
在docker中创建镜像最常用的方式就是使用dockerfile。Dockerfile是一个Docker镜像的描述文件,Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何创建。 一个Dockerfile的实例如下: 由上可知,Dockerfile结构大致分为四个部分: 1、基础镜像信息 2、维护者信息 3、镜像操作指令 4、容器启动时执行指令 Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释。下面对常用指令做一些介绍 二、Dockerfile常用指令 以下是通俗解释全景图 2.1、FROM 指明构建的新镜像是来自于哪个基础镜像 例如:FROM centos:6. 2.2 MAINTAINER 指明镜像维护者及其联系方式 2.3 RUN 构建镜像时运行的Shell命令。 例如: RUN [“yum”, “install”, “httpd”] RUN yum install xx 又如,在使用微软官方ASP.NET Core Runtime镜像时往往会加上以下RUN命令,弥补无法在默认镜像喜爱使用Drawing相关接口的缺憾: FROM microsoft/dotnet:2.2.1-aspnetcore-runtime RUN apt-get update RUN apt-get

C++_deque容器

元气小坏坏 提交于 2020-01-20 22:02:26
deque容器简介 deque双端队列是动态大小的序列式容器,可以向两端进行伸缩。 特定的库可以以不同的方式实现deque,但通常都是一种动态数组。不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。 deque提供了一些与vector相似的功能,但deque在头部和尾部进行数据插入和删除操作更加高效。与vector不同的是,deque不能保证所有的元素存储在连续的空间中,在deque中通过指针加偏移量方式访问元素可能会导致非法的操作。 vector与deque提供了相似的接口,因此其具有类似的用途,但是内部的实现原理不同:vector使用使用了动态数组,该数组通常需要动态增长;deque中的元素可能分散在不同的存储块中,在deque中保存了一些必要的信息,通常用来在常数范围内直接访问deque中的任何一个元素,所以deque的内部实现比vector复杂,但是这些额外信息使得deque在某些情况下增长更加的高效,特别是在序列比较大,重新分配成本比较高的情况下。 除了在频繁在头部或尾部进行插入和删除操作外,deque比list和forward_list的性能更差。 deque容器使用 (1)构造函数 deque() deque(size_type n, const value_type& val = value_type()) deque(const

读懂这一篇,集群节点不下线

ぐ巨炮叔叔 提交于 2020-01-20 21:19:02
作者 | 声东 阿里云售后技术专家 导读 :排查完全陌生的问题、完全不熟悉的系统组件,是售后工程师的一大工作乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如 systemd 和 dbus。但是排查问题的思路和方法基本上还是可以复用了,希望对大家有所帮助。 问题一直在发生 1. I’m NotReady 阿里云有自己的 Kubernetes 容器集群产品。随着 Kubernetes 集群出货量的剧增,线上用户零星的发现,集群会非常低概率地出现节点 NotReady 情况。 据我们观察,这个问题差不多每个月就会有一到两个客户遇到。在节点 NotReady 之后,集群 Master 没有办法对这个节点做任何控制,比如下发新的 Pod,再比如抓取节点上正在运行 Pod 的实时信息。 2. 需要知道的 Kubernetes 知识 这里我稍微补充一点 Kubernetes 集群的基本知识。Kubernetes 集群的“硬件基础”,是以单机形态存在的集群节点。这些节点可以是物理机,也可以是虚拟机。集群节点分为 Master 和 Worker 节点。 Master 节点主要用来负载集群管控组件,比如调度器和控制器; 而 Worker 节点主要用来跑业务。Kubelet 是跑在各个节点上的代理,它负责与管控组件沟通,并按照管控组件的指示

k8s - pod 的生命周期

▼魔方 西西 提交于 2020-01-20 18:06:36
先上图,通过图来看看pod的生命周期 当kubectl调用创建pod的命令之后,pod会经历以下几个阶段,跟着图来走 如图,这个pod里面会有n个容器 1. init container(初次化容器) 每个容器都可以存放一些初次容器(init container),这个初次容器的目的就在运行真正容器之前的一些准备工作,例如拷贝文件,初次化文件,或者获取一些敏感字段如密码,秘钥等。为什么这样做呢?有以下几个点 a.假设每个容器里面都带有一些拷贝的命令工具,如zip,或者crul等工具,就会造成每一个容器的大小会增加,因为这些unzip等工具,在容器运行当中是不会使用到的,这样变成工具冗余了,所以希望能在初次化容器中完成所有工作后就把容器关闭。 b.因为在真正启动的容器当中,是不可以访问敏感字段空间的,所以初次化容器就能把需要的敏感字段拿到后,赋予给主容器当中,这样就不会出现主容器的安全性问题了。 c.这里注意的是,初次容器是同步运行的,按顺序执行,第一初次化容器执行容器失败,是不会进入第二个初次化容器的。 d.这里也涉及到初次化容器的启动策略 2. start (启动容器) 初次化容器全部执行完成后,将会全部被杀掉,然后主容器将会被启动 3. readiness (探针) 启动过程中,会带有探针,目的是检查容器是否启动成功,如果成功,才会把服务端口暴露出去 4. liveness

Docker镜像打包示例

五迷三道 提交于 2020-01-20 17:57:04
一、war包(SpringMVC项目)镜像部署 1、拉取tomcat镜像 docker pull tomcat:8.5.30 2、上传需要部署的war包(以hello.war为例)到自定义的工作目录下 3、在上个步骤创建的工作目录下创建Dockerfile文件。将war包和Dockerfile文件放在同一目录下。Dockerfile文件内容如下: from tomcat:8.5.30 ENV LANG C.UTF-8 ENV TZ=Asia/Shanghai ENV JAVA_OPTS "-Djava.awt.headless=true" RUN touch /usr/local/tomcat/bin/setenv.sh && chmod +x /usr/local/tomcat/bin/setenv.sh && echo "CLASSPATH=/xx/hello" >/usr/local/tomcat/bin/setenv.sh RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN rm -rf /usr/local/tomcat/webapps/* ADD hello.war /usr/local/tomcat/webapps/ WORKDIR /usr/local

Spring-IOC原理简述

淺唱寂寞╮ 提交于 2020-01-20 04:23:29
今天的这个IOC,不打算分析源码了,一方面觉的Spring的源码很庞大,一步步跟的话容易陷入很深的某一个分支里,而且容易遗忘。所以打算简单的说下原理,大家可以先记下来简单的原理,然后再看看大佬们的博客,然后再一步步debug源码,这样估计也就差不多了。那么接下来就先简单说下IOC的原理吧。 IOC的从广义范围来说,意思是控制反转,什么是控制反转呢,大家肯定都知道,以前我们要使用一个类里的方法或者属性的时候,我们先要new 这个类,然后用这个对象调用里面的方法的。这是传统方式上的使用类里的方法和属性,但是这种方式存在很大的耦合性。为了降低耦合性,Spring出了IOC控制反转,它的含义是指,Spring帮助我们来创建对象就是我们所说的bean,并且管理bean对象,当我们需要用的时候,需要Spring提供给我们创建好的bean对象。这样就从之前我们的主动创建对象变为了,由Spring来控制创建对象,来给我们使用,也就是控制反转的意思。 对于IOC它的设计包括了: 依赖注入、依赖检查、自动配置、支持集合、指定初始化方法和销毁方法、支持回调某些方法。 它主要设计了两个接口用来表示容器 一个是BeanFactory 一个是ApplicationContext 对于BeanFactory这个容器来说,它相当一个HashMap,BeanName作为key,value就是这个bean的实例化对象

轻松理解 Kubernetes 的核心概念

ⅰ亾dé卋堺 提交于 2020-01-19 22:53:38
Kubernetes 迅速成为云环境中软件部署和管理的新标准。 与强大的功能相对应的是陡峭的学习曲线。 本文将提供 Kubernetes 的简化视图,从高处观察其中的重要组件,以及他们的关联。 硬件 (1)Node 节点 Node(节点)是计算资源的最小单位,表示集群中单台计算机。 可能是数据中心里面的计算机,也可能是云中的虚拟机,还可能是其他的东西。 Node 就是一个抽象层,我们不必关注某台机器的特性,只需要简单的视为我们可以利用的 CPU 和 RAM 资源。 (2)Cluster 集群 把多个 Node 集中到一起,形成功能强大的机器。 把应用部署到 Cluster 中时,可以智能为你分配具体的工作节点。 如果集群中的节点发生变化,例如添加或者删除,Cluster 会自动重新分配工作,我们无需关心代码是在哪个节点上运行。 (3)Persistent Volumes 持久型数据卷 应用不是运行在特定的节点上的,随时可能转移到其他节点上,所以,应用不能把数据保存到所在节点的文件系统中。 为了永久存储数据,kubernetes 提供了 Persistent Volumes ,就像一个插件一样,挂载到集群中,不与特定的节点绑定。 2. 软件 (1)Container 容器 Kubernetes 上运行的程序被打包为 Linux 容器。 容器化使您可以创建独立的 Linux 执行环境

kubernetes之配置Pod的QoS

余生长醉 提交于 2020-01-19 17:16:40
简介 此文讲述如何配置Pod的QoS(Quality of Service)即服务质量。Kubernetes使用QoS类来做出有关调度和驱逐Pod的决策。 备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。 QoS类 当Kubernetes创建Pod时,它将为这些Pod分配以下QoS类之一: Guaranteed Burstable BestEffort 创建一个分配了QoS类Guaranteed的Pod 创建namespace # kubectl create namespace qos-example 为Pod提供QoS类为Guaranteed的条件: Pod中的每个容器必须有内存请求和内存限制,而且它们的值必须相同 Pod中的每个容器必须有CPU请求和CPU限制,而且它们的值必须相同 创建一个Pod,该Pod中只有一个容器。该容器中自定义了内存请求和内寸限制,均等于 200MiB ,CPU请求和CPU限制均等于 700 milli CPU。文件名: qos-pod.yaml apiVersion: v1 kind: Pod metadata: name: qos-demo namespace: qos-example spec: containers: - name: qos-demo-ctr image: nginx resources:

Docker 学习 1 入门

雨燕双飞 提交于 2020-01-19 16:38:03
Docker 学习 1 入门 dockert 安装. Mac Ubuntu 查看docker 版本 docker version 拉取image. docker pull e.g docker pull centos:latest 查看docker image docker images 查看container 命令1(笔者更常用这个,命令简短): docker ps -a (所有的容器) docker ps (正在启动的容器) 命令2: docker container ls docker container ls --all (所有的,包括终止的容器) 进入容器 docker run docker run -it --name -p 80 centos:latest(镜像名) /bin/bash docker run -p 8080:80 -d --name nginx nginx (后台运行,加 -d,输出到log, 可以使用 docker logs container_name/container_id , it 分别表示, -i , 打开并保持stdout, -t 分配终端, --name 分配容器名, -p 开放容器端口 ) 退出 exit , 后台运行: ctrl+p ctrl+q 生成新image. a. docker commit docker commit -m

Docker安装与基础使用

烈酒焚心 提交于 2020-01-19 13:50:29
一、Docker介绍 Docker介绍 Docker 是一个开源的 应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker是通过 内核虚拟化技术 (namespaces和cgroups)来提供容器的资源隔离与安全保障。容器是完全使用沙箱机制,相互之间不会有任何接口。基于go语言并遵从Apache2.0协议开源。 Docker官方网站 Docker官方文档 Docker组成 Docker Client:CLI命令 Docker Server:守护进程 Docker组件 (与虚拟机进行对比) Docker Image 镜像:静态概念,把应用、代码和所需应用库(Bins/Libs)运行环境进行封装和打包 Docker Container 容器:动态概念,从镜像创建的一个 实例 ,容器之间相互隔离,可进行 启停、创建和删除 操作 Docker Repository 仓库:存放镜像 Docker特点 可管理性:单进程、不建议启动SSH 前台运行进程,进程结束时容器停止,Docker只实现进程级别的隔离(虚拟机实现操作系统级别的隔离) 基于C/S架构:Server端服务中断则运行于其上的所有容器停止 简化配置与快速部署:应用与运行环境进行打包,快速产品交付,可同时进行多个版本测试 不可变理论