容器

docker入门教程命令

大兔子大兔子 提交于 2019-12-09 22:59:47
docker镜像: docker images 查看镜像 docker search 镜像,查找镜像 docker pull 镜像:仓库 ,从具体的镜像仓库中获取镜像,如果不加版本号,默认是最新的版本 docker rmi 镜像 ,删除镜像,此操作成功前提所有用该镜像创建的容器都移除了 docker容器: docker run -i -t d --name ubuntutest ubuntu /bin/bash ,创建容器 docker run -d -p 外部ip:端口:端口 httpd 创建web容器 -d 后台运行 -i -t交互操作 -p 执行外部端口 -P执行内部端口,–name 容器别名 docker stop 容器 ,停止容器 docker rm 容器,删除容器 docker restart 容器,重启容器 docker exec -d ubuntu /bin/bash 进入容器内部 docker log id 查看容器日志 docker ps 查看当前运行的容器 docker ps -a 查看所有容器 docker port 容器ID 端口,查看容器绑定的端口的映射 来源: CSDN 作者: 哈哈xxy 链接: https://blog.csdn.net/weixin_43761300/article/details/103464982

docker基础使用与入门实践

a 夏天 提交于 2019-12-09 22:16:06
一、何为docker docker最早基于LXC实现(LinuX Container)从0.7版本以后开始去除LXC转而使用自行开发的libcontainer,从1.11开始,演进为runC和containerd;docker是go语言开发,基于Linux内核的cgroup,namespace以及AUFS类似的Union FS(联合文件系统)等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主机和其他的隔离进程,因此也称其为容器。 docker在容器的基础上进行了进一步的封装从文件系统,网络互联到进程隔离等,极大简化了容器的创建和维护管理。使得docker技术比虚拟机技术更为轻便,快捷。 虚拟机与docker比较: 图片引用自网络 由上面的比较图可以看同样启动一个服务;虚拟机会多一层操作系统,而docker和宿主机共用内核系统;因此docker占用资源更少,资源利用率更高; 虚拟机与docker对比 docker优点总结: 高效的资源利用率 快速的启动 一致的运行环境 持续将会和部署 更轻松的迁移 便捷的维护和扩展 二、dcoker安装 系统要求:CentOS7.x_x64且安装Docker CE版本(社区版),不要使用epel仓库自带的docker docker从1.17后主要分docker-ce和docker-ee(企业版,你懂滴

Docker(一):认识Docker

蹲街弑〆低调 提交于 2019-12-09 22:08:59
Docker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的CGroup,Namespace,Union FS等技术实现,对应用程序进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称为容器。是一种系统级的虚拟化技术。 Docker早起版本实现是基于LXC,并进一步对其封装,包括文件系统、网络互联、镜像管理等方面,极大简化了容器管理。从0.7版本以后开始去除LXC,转为自行研发的libcontainer,从1.1开始,进一步演进为使用runc和containerd。 2014年4月9日,发布第一个正式版本v1.0。 2017年2月8日,发布v1.13.1 2017年3月1日,发布v17.03-CE版本,从此版本开始分为企业版和社区版。 从下图可以看出从2106年Docker技术引起爆发式关注。 1.1 Docker思想 Docker的思想源于集装箱,集装箱解决了什么问题呢?在早期运输货物需要不同分类的船,例如运输水果的船,运输生活用品的船,有了集装箱后,在大船上,可以把货物分类到不同的集装箱中,水果一个集装箱,生活用品一个集装箱,它们之间互不影响,只要把货物封装好集装箱里,就可以把不同类的货物一起运走。 通过Docker logo也可以看出所以然来,Docker就像大船,集装箱就是容器。 一条鲸鱼拖着若干个集装箱的经典形象已经深入人心。

Docker 容器的资源限制 cgroup(九)

浪尽此生 提交于 2019-12-09 22:07:05
一、cgroup简介 docker 通过 cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 cgroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被 LXC、docker 等很多项目用于实现进程资源控制。cgroup 将任意进程进行分组化管理的 Linux 内核功能。cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为 cgroup 子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及 usb 等等。 cpu:使用调度程序为 cgroup 任务提供 cpu 的访问。 cpuacct:产生 cgroup 任务的 cpu 资源报告。 cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存。 devices:允许或拒绝 cgroup 任务对设备的访问。 freezer:暂停和恢复 cgroup 任务。 memory:设置每个 cgroup 的内存限制以及产生内存资源报告。 net_cls

k8s 是什么,有什么功能

走远了吗. 提交于 2019-12-09 22:04:02
k8s是一个docker集群的管理工具 k8s是容器的编排工具 1. k8s的核心功能 自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应党的容器会被中止,并且,在容器准备好服务之前不会把容器向客户端广播。 弹性伸缩: 通过监控容器的cpu的使用负载,如果这个容器评价高于80%,增加容器的数量,平均值低于10%,减少容器数量。 服务的自动发现和负载均衡: 不需要修改您的应用程序来使用不熟悉的服务发现机制,kubernetes为容器提供了自己的ip地址和一组容器的单个DNS名称,并可以在他们之间进行负载均衡。 滚动升级和一键回滚: kubernetes 逐渐部署对应用程序或者其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。如果出现问题,kubernetes会为你恢复更改,利用日益增长的部署,解决方案的生态系统。 私密配置文件管理: web容器里面,数据库的账户密码(测试库密码) 2. k8s的历史 2014年 docker容器编排工具,立项 2015年7月 发布kubernetes 1.0, 加入cncf基金会 孵化 2016年,kubernetes干掉两个对手,docker swarm,mesos marathon 1.2版 2017年 1.5 -1.9 2018年 k8s 从cncf基金会 毕业项目 2019年

Docker之Namespace与Cgroup

拜拜、爱过 提交于 2019-12-09 22:01:58
博文大纲: 一、Docker概述 二、Namespace概念 三、Cgroup基本概念与示例 一、Docker概述 1.Docker简介 Docker作为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,docker的全部源代码都在https://github.com/docker 进行相关维护,其官网是: https://www.docker.com 。 Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。如图: 如图所示:鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。正如 Docker的设计宗旨一样:Buid、 Ship and Run Any App、 Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。 2.Docker和虚拟机的区别 作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势。如图: Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟操作系统层,而Docker容器是直接在操作系统层面之上实现的虚拟化,如图: 3.Docker的使用场景

容器之分类与各种测试(三)——stack

独自空忆成欢 提交于 2019-12-09 21:20:38
stack是栈,其实现也是使用了双端队列(只要不用双端队列的一端,仅用单端数据进出即完成单端队列的功能),由于 queue 和 stack 的实现均是使用deque,没有自己的数据结构和算法,所以这俩也被称为 容器适配器(container adapter) 。 例程 #include<stdexcept> #include<string> #include<cstdlib> #include<cstdio> #include<algorithm> #include<iostream> #include<ctime> #include<stack> using namespace std; long get_a_target_long() { long target = 0; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; return target; } string get_a_target_string() { long target = 0; char buf[10]; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; snprintf(buf, 10, "%ld", target); return string(buf); } int compareLongs(const

容器的分类与各种测试(三)——deque

回眸只為那壹抹淺笑 提交于 2019-12-09 20:10:24
deque是双端队列,其表象看起来是可以双端扩充,但实际上是通过 内存映射管理 来营造可以双端扩充的假象,如图所示 比如,用户将最左端的buff用光时,map会自动向左扩充,继续申请并映射一个新的buff,右端同理。 例程 #include<stdexcept> #include<string> #include<cstdlib> #include<stdio.h> #include<algorithm>//sort,qsort #include<iostream> #include<ctime> #include<deque> using namespace std; long get_a_target_long() { long target = 0; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; return target; } string get_a_target_string() { long target = 0; char buf[10]; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; snprintf(buf, 10, "%ld", target); return string(buf); } int compareLongs(const void* a,

44 容器(三)——ArrayList索引相关方法

 ̄綄美尐妖づ 提交于 2019-12-09 20:02:28
方法都比较简单,这里列出来即可: add(index,ele) //忘制定下标插入元素 add(ele) addAll(Collection <C> c) 泛型必须与调用add的泛型保持一致 set(index,ele) remove(index) remove(Object) removeAll(Collection<C> c) 移除交集元素 get(index) 返回制定下标的元素 indexOf(Object o) 返回指定元素第一次出现所在的下标(正序) lastIndexOf(Object o ) 返回指定元素第一次出现所在的下标(倒叙) contains(Object) 是否包含某个元素 containsAll(Collection<C> c)是否包含某个集合 retainAll(Collection<C> c)保留两个集合的交集 toArray() 返回一个Object[]数组 clear() 清空集合 来源: https://www.cnblogs.com/Scorpicat/p/12013061.html

容器的分类与各种测试(三)——queue

萝らか妹 提交于 2019-12-09 18:42:58
queue是单端队列,但是在其 实现上是使用的双端队列 ,所以在queue的实现上多用的是deque的方法。(只要用双端队列的一端只出数据,另一端只进数据即可从功能上实现单端队列)如下图 例程 #include<stdexcept> #include<string> #include<cstdlib> #include<cstdio> #include<algorithm> #include<iostream> #include<ctime> #include<queue> using namespace std; long get_a_target_long() { long target = 0; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; return target; } string get_a_target_string() { long target = 0; char buf[10]; cout<<"target(0~"<<RAND_MAX<<"):"; cin>>target; snprintf(buf, 10, "%ld", target); return string(buf); } int compareLongs(const void* a, const void* b) { return (*(long*