1-docker 介绍

1-docker 介绍

由PaaS到Container

2013年2月,前Gluster的CEO Ben Golub 和 dotCloud 的 CEO Solomon Hykes 坐在一起聊天时,Solomon谈到想把 dotCloud 内部使用的Container容器技术单独拿出来开源,然后围绕这个技术开一家新公司提供技术支持。28岁点Solomon在使用python开发dotCloud的PaaS云时发现,使用LXC(Linux Container)技术可以打破产品发布过程中应用工程师和系统工程师两者之间无法轻松协作发布产品的难题。这个Container容器技术可以把开发者从日常部署的繁杂工作中解脱出来,让开发者能专心写好程序;从系统工程师到角度来看也是一样的,他们迫切需要从各种混乱的部署中解脱出来,让系统工程师专注在应用的水平扩展、稳定发布的解决方案上。他们深入交谈,觉得这是一次云技术的变革,紧接着在2013年3月Docker0.1发布,拉开来基于云计算平台发布产品方式的变革序幕。

了解paas

Docker 简介

在这里插入图片描述

Docker时Docker.lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。Docker在2014年6月召开DockerConf2014技术大会吸引了IBM、Google、RedHat等业界知名公司的关注和技术支持,无论是从Github上到代码活跃度,还是RedHat宣布REHL7中正式支持Docker,都给业界一个信号,这是一项创新的技术解决方案。就连Google公司的Computer Engine 也支持Docker在其中之上运行,国内BAT先锋企业百度 Baidu App Engine(BAE)平台也是以 Docker作为PasS云基础。

Docker产生的目的就是要解决以下问题

  1. 环境管理复杂:从各种OS到各种中间件再到各种App,一款产品能够成功发布,作为开发者需要关心的东西太多,且难于管理,这个问题在软件行业中普遍存在并需要直接面对。Docker可以简化部署多种应用实例工作,比如Web应用、后台应用、数据库应用、大数据应用比如Hadoop集群、消息队列等等都可以打包成一个image部署。如下图所示:

在这里插入图片描述

  1. 云时代的到来:AWS的成功,引到开发者将应用转移到云上,解决来硬件管理的问题,然而软件配置和管理香瓜的问题依然存在。Docker的出现正好能帮助软件开发者开阔思路,尝试新的软件管理方法来解决这个问题。

  2. 虚拟化手段的变化:云时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需分配的资源需求以及保证可用性和隔离性。然而无论是KVM还是Xen,在Docker卡来都是在浪费资源,因为用户需要的是高校运行环境而非OS,GuestOS即浪费资源,又难于管理,更加轻量级大LXC更佳灵活和快速:

image

  1. LXC的便携性: LXC在 Linux 2.6 的 Kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可便携性,决定其构建出的环境难于分发和标准化管理(相对于KVM之类image和snapshot的概念)。Docker就在这个问题上做出了实质性的创新方法。

Docker 相比虚拟机的优势

Docker 技术比虚拟机技术更为轻便快捷

Docker 可以解决虚拟机能够解决的问题,也可以解决虚拟机由于资源要求过高而无法解
决的问题。

  • 隔离应用依赖
  • 创建应用镜像并复制
  • 创建易于分发的即开即用的应用或者应用镜像
  • 允许实例简单快速扩展
  • 易于测试和销毁

Docker 的初衷是创建软件程序可移植的轻量容器,让软件可以在任何安装了 Docker 的
主机上运行,而不用关心底层操作系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3-docker 架构和底层技术简介

3-docker 架构和底层技术简介 Docker Platform Docker 是一个平台。 提供了一个开发、打包、运行app的平台把app和底层 infrastructure 隔离开来 根据上图我们可以看出 Docker Engine 把上层的 app 应用程序和底层的物理设备或虚拟设备进行了隔离,然后我们在 doc…

4-什么是Image和container

4-什么是Image和container 什么是Image? 先练习一个例子: docker pull ubuntu:16.04 docker image ls # 查看镜像镜像类似于一个系统安装光盘,你可以使用一个安装光盘为多台电脑安装操作系统,同样,你也可以用同一个镜像构建多个运行的…

5-Dockerfile文件

5-Dockerfile文件 先练习一个例子: 创建 Dockerfile 文件 FROM ubuntu:14.04 LABEL maintainer"vincent <jeffmanwordgmail.com>" RUN apt-get update && apt-get install -y redis-server EXPOSE 6397 ENTRYPOINT [ "/usr/bin/redis-server&quo…

6-搭建一个私有registry

6-搭建一个私有registry docker hub 查找 registry docker hub registry 可以看到部署很简单&#xff0c;只有一条命令。 docker run -d -p 5000:5000 --restart always --name registry registry:2部署私有registry 找一台linux的服务器并安装好docker 在此服务器上部署re…

7-深入练习Dockerfile

7-深入练习Dockerfile 创建一个json-server 镜像 首先创建一个 json-server 文件夹 mkdir json-server在json-server文件夹下创建Dockerfile FROM node:10.15.0 RUN npm install -g json-server构建镜像 docker build -t json-server .创建一个api服务的镜像 首先创建一个 …

8-容器操作

8-容器操作 普通操作 进入容器 docker exec -it api /bin/bash容器停止与启动 docker stop api docker start api容器重启 docker restart api查看容器详细信息 docker inspect api查看日志 docker logs api容器删除 docker stop api # 必须先停止才能删除 docker rm…

9-资源限制

9-资源限制 了解stress工具 stress是一个压力测试工具 docker run -it ubuntu:16.04此时会进入ubuntu内&#xff0c;这时我们安装 stress工具 apt-get update && apt-get install -y stress查看help stress --helpUsage: stress [OPTION [ARG]] ...-?, --help …

10-Docker 网络

10-Docker 网络 基础网络概念 数据传输通过数据包 两台笔记本之间通信是通过数据包通信的。想知道数据包是怎么打包的呢&#xff0c;就先要知道网络分层的概念。 网络分层 目前有两种网络分层的模型。 ISO/OSI 分层&#xff0c;也就是 7 层模型。TCP/IP 分层&#xff0c;也就…

11-Docker Bridge详解

11-Docker Bridge详解 容器之间是如何通信的&#xff1f; 操作前删除test2的容器。 查看当前机器上docker的网络 docker network lsNETWORK ID NAME DRIVER SCOPE 056d0ece100f bridge bridge local a…

12-容器之间link

12-容器之间link 这篇主要讲 容器之间如何 link。 需要准备的是&#xff0c;创建两个容器 test1 和 test2 通过 busybox。 在之前的课程中已经创建的只需要重新启动即可。 什么情况下需要link 例如有一个容器是 web 服务器&#xff0c;并且跑在一个docker容器内&#xff0c;…

13-容器的端口映射

13-容器的端口映射 部署一个简单web nginx容器 docker run -d --name web nginxnginx 默认的端口是 80 端口&#xff0c;此时我们是没有办法访问的。 好的&#xff0c;通过前面的学习我们已经知道&#xff0c;这个 web 容器四连接到 bridge 网桥上的&#xff0c;那我们查看一…

14-容器网络之host和none

14-容器网络之host和none 在之前的小节&#xff0c;我们有看到过 host 和 none。 通过 docker network ls 查看。 none 网络 删除 test1 容器 docker stop test1 && docker rm test1创建 test1 容器并连接到none网络 docker run -d --name test1 --network none busy…

15-多容器复杂应用的部署

15-多容器复杂应用的部署 此节主要是通过部署一个复杂的应用场景&#xff0c;进而练习容器的网络相关知识。 创建一个flask-web应用 创建一个 flask-web 文件夹 mkdir flask-web在此文件夹内创建 app.py 文件 cd flask-web touch app.py编写一个简单的 web 程序 import os im…

16-多机器通信

16-多机器通信 回顾上节课的思考题。 flask-redis 想访问 redis&#xff0c;该如何通信&#xff1f; 创建另外一台linux虚拟机 直接拷贝Vagrantfile文件创建一个 centos 虚拟机 我们创建一个centos7-2文件夹&#xff0c;然后创建虚拟机 vagrant up创建的过程中提示选择网络接…

17-Docker的数据持久化介绍

17-Docker的数据持久化介绍 回顾容器与镜像 容器是在镜像之上创建的一层运行时层&#xff0c;这一层是可以读写的&#xff0c;我们能够在容器内添加数据&#xff0c;读取数据。 也就是说我们在创建容器的时候&#xff0c;我们能够在容器内创建文件&#xff0c;安装软件等等&a…

18-数据持久化-Data Volume

18-数据持久化-Data Volume Data Volume 使用场景。一般来讲有些容器自己会产生一些数据&#xff0c;我们不想数据随着容器的销毁而销毁&#xff0c;我们想保存数据&#xff0c;正常一般用在数据库&#xff0c;比如我们想保存数据库中的数据&#xff0c;这个时候我们就会使用 …

19-数据持久化-Bind Mounting

19-数据持久化-Bind Mounting Bind Mounting 与 Data Volume区别 Data Volume 需要在 Dockerfile 内声明需要创建的 volume 目录。 Bind Mounting 则不需要在 Dockerfile 声明 volume&#xff0c;只需要在创建容器的时候&#xff0c;也就是 run 的时候声明即可。 如: dock…

go自定义包教程

go自定义包教程 而是环境为 go version go1.11 linux/amd64linux mint 19 创建一个自定义的包 切换到src目录下&#xff0c;创建demo目录 cd src mkdir demo再创建smap 文件夹 cd demo mkdir smap创建包文件 cd smap touch map.gomap.go文件内容 package smapimport "…

在Linux中对硬盘进行分区、格式化和挂载

在Linux中对硬盘进行分区、格式化和挂载 我最近有一个全新的4-TB硬盘加入我的电脑。所以我需要在Linux中安装它。为此&#xff0c;我需要执行以下操作&#xff1a; 分区格式化挂载检查是否已安装硬盘驱动器 分区 首先&#xff0c;在通过SATA和电源线将硬盘连接到计算机后&am…

Angular gitlab持续集成之runner配置

gitlab持续集成 安装Runner 正常安装 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64sudo chmod x /usr/local/bin/gitlab-runner sudo useradd --comment GitLab Runner --creat…