容器

8 分钟入门 K8s | 详解容器基本概念

拈花ヽ惹草 提交于 2020-01-01 13:31:41
一、容器与镜像 什么是容器? 在介绍容器的具体概念之前,先简单回顾一下操作系统是如何管理进程的。 首先,当我们登录到操作系统之后,可以通过 ps 等操作看到各式各样的进程,这些进程包括系统自带的服务和用户的应用进程。那么,这些进程都有什么样的特点? 第一,这些进程可以相互看到、相互通信; 第二,它们使用的是同一个文件系统,可以对同一个文件进行读写操作; 第三,这些进程会使用相同的系统资源。 这样的三个特点会带来什么问题呢? 因为这些进程能够相互看到并且进行通信,高级权限的进程可以攻击其他进程; 因为它们使用的是同一个文件系统,因此会带来两个问题:这些进程可以对于已有的数据进行增删改查,具有高级权限的进程可能会将其他进程的数据删除掉,破坏掉其他进程的正常运行;此外,进程与进程之间的依赖可能会存在冲突,如此一来就会给运维带来很大的压力; 因为这些进程使用的是同一个宿主机的资源,应用之间可能会存在资源抢占的问题,当一个应用需要消耗大量 CPU 和内存资源的时候,就可能会破坏其他应用的运行,导致其他应用无法正常地提供服务。 针对上述的三个问题,如何为进程提供一个独立的运行环境呢? 针对不同进程使用同一个文件系统所造成的问题而言,Linux 和 Unix 操作系统可以通过 chroot 系统调用将子目录变成根目录,达到视图级别的隔离;进程在 chroot 的帮助下可以具有独立的文件系统

容器化的 DevOps 工作流

北慕城南 提交于 2020-01-01 13:31:21
对于 devops 来说,容器技术绝对是我们笑傲江湖的法宝。本文通过一个小 demo 来介绍如何使用容器技术来改进我们的 devops 工作流。 devops 的日常工作中难免会有一些繁琐的重复性劳动。比如管理 Azure 上的各种资源,我们会使用 Azure CLI 工具。同时我们也会使用 Ansible 完成一些自动化的任务。当我们同时使用二者的时候就会碰到一些尴尬的事情:Azure CLI 依赖的 python 版本为 3.x,而 Ansible 的主流版本还在依赖 python 2.x。如果我们要同时使用二者,就需要在环境中搞一些飞机。如果团队中的每个成员都需要使用这样的工具,那么每个人的环境中都需要这些飞机!下面是一些比较类似的问题: 一些工作流在陌生的环境中不能正确的工作 在工作流中加入新的工具时,整个团队都需要获取并安装这些新的工具 运行 devops 工作流不能对当前的环境产生影响(应该允许在 build 环境中运行 devops 工作流) 工作流的变化不会对运行环境产生任何的影响 实现这些需求的最好方式就是容器技术!通过容器把我们的 devops 工作流和运行环境隔离开就可以了。文本的 demo 会演示一个非常简单的使用 Azure CLI 的工作流,我们的目标是为整个团队打造一个满足以上需求的工具集(容器镜像)。其大体步骤如下: 创建构造容器镜像的

Docker简介以及使用docker搭建lnmp的过程(多PHP版本)

不问归期 提交于 2020-01-01 13:31:03
一、Docker基础 Docker安装 Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。 通过 uname -r 命令查看你当前的内核版本 通过 apt-get install docker.io 安装docker Docker常见命令 容器相关操作 docker create # 创建一个容器但是不启动它 例如: docker create -- name mycon php :5.6-fpm docker run # 创建并启动一个容器     -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;     -d: 后台运行容器,并返回容器ID;     -i: 以交互模式运行容器,通常与 -t 同时使用;     -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;     --name="nginx-lb": 为容器指定一个名称;     -P: 容器的80端口映射到主机的随机端口     -p: 容器的端口映射到主机的对应端口,例如: -p 80:80     -v: 主机的目录映射(挂载)到容器的目录,例如:-v /home/ubuntu/nginx/www:/www     -m 或 --memory:设置内存使用限额。例如

docker容器安全

让人想犯罪 __ 提交于 2020-01-01 13:29:58
title: docker容器安全 tags: Docker,容器,安全策略 grammar_cjkRuby: true --- Docker容器的安全性 1.安全策略-Cgroup 1.限制Cpu docker run --rm -ti -c 2000 ubuntu bash 2.限制内存 docker run --rm -ti -m 200M ubuntu bash 3.限制快设备io docker run --rm -ti --name container1 ubuntu bash dd if=/dev/zero of=testfile0 bs=8k mount=5000 oflag=direct 修改 Cgroup文件 # 查找容器挂载的文件系统“/dev/mapper”的位置 $ mount|grep ContainerID # 查看容器挂载的文件系统中的文件(Path为上条命令取得的返回结果) # 返回结果“->”标记后会有一个新的路径,我们先称其为DeviceFilePath $ ls -l Path # 查询容器挂载的设备号 $ ls DeviceFilePath -l # 返回结果中“root disk”后面会有一串用“,”隔开的数字,假设是128和256 # 限制容器的写速度 $ sudo echo '128:256 10240000' >/sys/fs

Docker 学习之命令详解

岁酱吖の 提交于 2020-01-01 13:29:20
1. docker version docker version 显示 Docker 版本信息。 2. docker info docker info 显示 Docker 系统信息,包括镜像和容器数。 3. docker search docker search [options] term docker search -s 10 django 从 Docker Hub 中搜索符合条件的镜像。 --automated 只列出 automated build 类型的镜像; --no-trunc 可显示完整的镜像描述; -s 40 列出收藏数不小于40的镜像。 4. docker pull docker pull [-a] [user/]name[:tag] docker pull laozhu/telescope:latest 从 Docker Hub 中拉取或者更新指定镜像。 -a 拉取所有 tagged 镜像 。 5. docker login root@moon:~# docker login Username: username Password: **** Email: user@domain.com Login Succeeded 按步骤输入在 Docker Hub 注册的用户名、密码和邮箱即可完成登录。 6. docker logout docker logout

Docker简介

僤鯓⒐⒋嵵緔 提交于 2020-01-01 13:22:54
Docker基本概念 Docker客户端和服务器,又称Docker引擎 镜像(image) 容器(container) 仓库(Repository) Docker客户端和服务器 Docker是一个客户端/服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker守护进程有时也称为Docker引擎。Docker提供了一个命令行工具docker以及一整套RESTful API来与守护进程交互。用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。 Docker镜像 操作系统有内核态和用户态两种运行级别。对于linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像就相当于是一个root文件系统。比如Docker官方镜像ubuntu:14.04就包含了完整的一套Ubuntu14.04最小系统的root文件系统。 Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 用户基于镜像来运行自己的容器

docker知识点总结

旧巷老猫 提交于 2020-01-01 13:14:56
docker简介 docker是什么 问题:为什么会有docker出现 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验 Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。 环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 之前在服务器配置一个应用的运行环境,要安装各种软件。安装和配置这些东西有多麻烦就不说了,它还不能跨平台。假如我们是在 Windows 上安装的这些环境,到了 Linux 又得重新装。况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。 传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。Docker镜像的设计

Docker基础

孤街醉人 提交于 2020-01-01 13:00:01
Docker概述   docker基本组成  docker client: 客户端 docker deamon:守护进程 docker image:  镜像 docker container: 容器 docker registry: 镜像仓库      docker和虚拟机比较        docker运用场景:  应用程序打包和发布 应用程序隔离 持续集成 部署微服务 快速搭建测试环境 提供paas环境(平台既服务)     镜像概述:   镜像是什么?     • 一个分层存储的文件     • 一个软件的环境     • 一个镜像可以创建N个容器     • 一种标准化的交付     • 一个不包含Linux内核而又精简的Linux操作系统     镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层 对应着Dockerfile中的一条指令。Docker镜像默认存储   在/var/lib/docker/\<storage-driver\>中。     (ps:直白来讲,镜像就是一个环境,这个环境可能是单独的一个软件运行环境,也有可能是一整套很多相互依赖的软件运行环境。实际生产过程中就是将整个代码加环境打包成镜像,让后在容器中运行。)      镜像从哪里来?     Docker

docker基础使用笔记

瘦欲@ 提交于 2020-01-01 10:07:06
这里写自定义目录标题 docker 安装(ubuntu系统) 配置docker的镜像地址 docker的镜像配置 docker的常用命令 docker 镜像的常用命令 docker容器的常用命令 名词解释 镜像和容器 虚悬镜像 中间层镜像 Dockerfile 创建Dockerfile文件 Dockerfile的上下文 Dockerfile的构建命令 docker命令速查表 docker 安装(ubuntu系统) # 更新数据源 apt-get update # 安装所需依赖 apt-get -y install apt-transport-https ca-certificates curl software-properties-common # 安装 GPG 证书 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # 新增数据源 add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $( lsb_release -cs ) stable" # 更新并安装 Docker CE apt-get update && apt-get install

看完后你就知道什么是依赖注入与Ioc容器了

核能气质少年 提交于 2020-01-01 07:24:22
背景 在很多编程语言(例如java)开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,一旦有修改,牵扯的类会很多。 最早在java的spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。目前许多主流PHP框架也使用了依赖注入容器,如ThinkPHP、Laravel等。 一、概念 1、容器:字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,现在我们讨论的是这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调(闭包),通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦”、“依赖注入”。 2、IoC - Inversion of Control 控制反转 控制反转是从容器的角度在描述,即:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。 3、DI - Dependency Injection 依赖注入 依赖注入是从应用程序的角度在描述,可以把依赖注入,即:应用程序依赖容器创建并注入它所需要的外部资源。 备注:依赖注入和控制反转说的是同一个东西,是一种设计模式