赞
踩
目录
Docker 是一个开源的应用容器引擎,基于 Go语言并遵从 Apache2.0 协议开源。它可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,它完全使用沙箱机制,相互之间不会有任何接口,而且容器性能开销极低。
docker与虚拟机的对比
打包、分发、部署
打包:就是把你软件运行所需的依赖、第三方库、软件打包到一起,变成一个安装包
分发:你可以把你打包好的“安装包”上传到一个镜像仓库,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个命令运行起来你的应用,自动模拟出一摸一样的运行环境,不管是在Windows/Mac/Linux.
web应用的自动化打包和发布
自动化测试和持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应用
从头编译或者扩展现有的 OpenShift(红帽的云开发平台) 或 Cloud Foundry(VMvare推出的第一个开源Paas云平台) 平台来搭建自己的 PaaS 环境
1. **轻量级**:Docker容器化技术提供了轻量级的虚拟化,使得应用程序和它们的依赖能够以容器的形式打包并在不同环境中运行,减少了资源占用和启动时间。
2. **一致性**:Docker容器将应用程序及其依赖项打包成一个独立的单元,确保了在不同环境中的一致性,从而避免了"在我的机器上可运行,在别的机器上不能运行"的问题。
3. **可移植性**:Docker容器可以在不同的主机和云平台上运行,提供了良好的可移植性和跨平台性。
4. **高效性**:Docker容器共享操作系统内核,因此相比于传统的虚拟化技术,它们占用更少的系统资源,并且能够快速启动和停止。
1. **网络配置复杂**:在多个Docker容器之间设置网络通信可能需要一些额外的配置和管理,特别是在跨主机和多节点集群中。
2. **安全性挑战**:Docker容器之间的隔离性相对较弱,如果不正确配置,可能会导致容器之间的相互影响或者安全漏洞的产生。
3. **不适合长时间运行**:Docker容器主要用于应用程序的短期运行和扩展,对于长时间运行的应用程序,可能需要考虑其他技术来管理状态和持久化存储 。
4. **陡峭的学习曲线**:尽管Docker方便快捷,但不可否认要精通该平台需要一定的学习曲线 。
5. **平台到平台的通信**:尽管容器可以无缝地相互通信,但在平台间的通信可能需要额外的配置和管理 。
6. **实例无状态**:Docker实例是无状态的,这意味着它们不应该承载任何交易数据,所有数据都需要在宿主环境中处理 。
以上就是Docker的主要优缺点,它在开发、测试和部署等方面带来了很大的便利,但也需要注意其使用过程中的一些挑战和限制。
三个基本概念
镜像:Docker镜像相当于一个root文件系统(一个小的虚拟机)
容器:镜像和容器的关系就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建,启动、停止、删除、暂停等。(安装好软件的虚拟机环境)
仓库:仓库可看成一个代码控制中心,用来保存镜像
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
相关概念:
Docker镜像:用于创建Docker容器的模版
Docker容器:独立运行的一个或一组应用,是镜像运行时的实体。
Docker客户端:通过命令行或者其他工具使用Docker SDK与Docker的守护进程通信。
Docker主机:一个物理或者虚拟机用户执行Docker守护进程和容器
Docker registry:用来保存镜像,可以理解为代码控制中的代码仓库。
Docker machine:一个简化Docker安装的命令行工具
1、沙箱—— 一个限制应用程序对系统资源的访问的运行环境
沙箱的主要目的是为了隔离和保护,它可以隔离网络中的不同用户或应用程序,提供独立的执行环境,防止一个用户或应用程序的恶意行为对其他用户或应用程序造成影响 。
沙箱的应用非常广泛,例如在搭建测试环境时,沙箱的应用只能访问自己的应用访问目录,而不能应用之间的资源进行共享,这样就形成了一个相对安全的机制,由于沙箱具有非常良好的独立性、隔离性,所以能够搭建一些具有高风险的软件进行测试 。此外,沙箱也被广泛应用于网络防御、安全测试、漏洞扫描和应急响应等领域。
沙箱的核心在于指定一套程序执行机制,在这个机制下沙箱内部程序的运行不会影响外部运行。例如,沙箱内万物基于重定向:重新指定方向,也就是说沙箱能够做到让沙箱内软件操作的文件、注册表等路径重定向到沙箱指定位置,这样软件本来想操作的资源就不会被访问或者操作,保证资源的安全性。
沙箱是一种强大的安全工具,它可以在隔离的环境中运行应用程序,防止恶意软件对系统资源的非法访问,从而提高系统的安全性。
2、PaaS(平台即服务)、Iaas(基础设施即服务)、 Saas(软件即服务)
IaaS、PaaS 和 SaaS 是云计算的三种主要服务类型,它们分别代表着不同的服务层级和功能。
IaaS (Infrastructure as a Service)
基础设施即服务(Infrastructure as a Service,IaaS)提供了虚拟化的计算资源,如服务器、存储和网络,用户可以根据自己的需求自由配置和使用这些资源,而不必关心硬件的购置和管理。这种服务模式允许用户节省大量的前期投资,并能够灵活地调整资源以适应业务需求的变化。
PaaS (Platform as a Service)
平台即服务(Platform as a Service,PaaS)则提供了软件部署平台,抽象掉了硬件和操作系统细节,使得开发者可以专注于自己的业务逻辑,而不需要关心底层的基础设施。PaaS 为生成、测试和部署软件应用程序提供一个环境,特别适合于需要定制开发的企业或开发者。
SaaS (Software as a Service)
软件即服务(Software as a Service,SaaS)是通过网络提供软件服务,用户可以直接通过网络使用软件,无需在本地安装和维护软件。SaaS 通常是由第三方供应商管理的应用程序,用户只需通过 Web 浏览器就可以访问这些应用程序,这种方式简化了软件的管理和更新,同时也减少了企业的 IT 成本 。
如何选择 IaaS、PaaS 或 SaaS?
选择哪种服务模式取决于你的具体需求和目标。如果你需要控制基础设施,并且希望自定义解决方案,那么 IaaS 可能是最好的选择。如果你的重点是开发和部署应用程序,那么 PaaS 可能更适合你。如果你只需要使用软件,而不需要关心其背后的基础设施和维护工作,那么 SaaS 可能是最好的选择 。
docker部署:
1、启动:systemctl start docker
2、查看状态:systemctl status docker
3、停止:systemctl stop docker
4、重启:systemctl restart docker
5、设置开机启动项:systemctl enable docker
1、查看镜像:docker images(docker images -q 查看所有镜像的ID)
REPOSITORY:软件名称
TAG:版本
IMAGE ID:镜像的ID
CREATED:创建/安装的时间
SIZE:软件的大小
2、搜索镜像:docker search redis
3、拉取镜像:docker pull redis
如果想拉取具体版本的软件,需要登录镜像的后面加上“:版本号”,如果不指导镜像具体版本,可以去dockerhub搜索对应镜像查看。
4、删除镜像:docker rmi ID/名字+版本
删除所有的镜像:docker rmi `docker images -q`
1、创建容器:docker run -it --name r1 centos:7 /bin/bash (这种方式创建的容器后会自动进入容器,使用exit退出后就会关闭容器)
docker run -id --name r2 centos:7 /bin/bash (这种方式创建的容器后不会自动进入容器,需要使用exec命令进入容器,使用exit退出后就不会关闭容器)
参数:
-i 容器一直运行;
-t 给容器分配一个终端;
--name 起名字;
-d 后台运行容器,exit退出后不会关闭
2、查看正在运行的容器:docker ps
查看历史运行的容器:docker ps -a
3、进入容器:docker exec -it 容器ID
4、启动容器:docker start r1
5、关闭容器:docker stop r1
6、删除容器:docker rm r1
删除所有容器(在运行的无法删除):docker rm `docker ps -aq`
7、查看容器信息:docker inspect r1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。