找回密码
 立即注册
搜索

[运维] Linux容器与Docker的发展历史

[复制链接]
智慧谋略 发表于 2022-8-24 01:06:01 | 显示全部楼层 |阅读模式
LXD构建在LXC之上,并通过内核扩展其功能,而不是独立于操作系统。Docker于2013年推出,最初基于LXC,并添加了用户友好的工具,以吸引嵌入式开发人员寻找大型虚
容器是敏捷软件开发的中心。他们已经从边缘的开源技术转向为现代软件和嵌入式Linux系统提供动力的构建块。随着物联网(IoT)的出现,该领域的先锋公司现在正在寻找容器,以将DevOps的优势扩展到嵌入式开发系统的独特需求。随着企业希望扩大其物联网环境的能力,流行的容器技术如LXC或Linux容器和Docker位居榜首。
容器简史
容器作为虚拟机(VMs)的轻量级替代品得到普及。虚拟机是虚拟化硬件服务器,允许用户在现有主机操作系统上安装和运行来宾操作系统(OS)。这意味着在任何操作系统环境中开发的应用程序都可以在任何系统上运行。
但是,虚拟机具有很高的开销、维护成本和较大的映像大小,这可能会将资源过度分配给运行在虚拟机上的操作系统的每个实例。另一方面,容器是虚拟化的软件环境,它将应用程序的代码及其依赖项打包,以便应用程序可以在任何主机上单独并行运行,并根据需要分配资源。

LXC和LXD–操作系统的容器化
容器技术于2001年通过Jacques Gélinas的LinuxVServer项目首次引入。这种早期形式的容器技术经历了几次重新设计,例如添加了cgroup功能,允许在不需要启动任何虚拟机的情况下限制和优先排序资源(CPU、内存、块I/O、网络);以及名称空间隔离功能,该功能允许完全隔离应用程序对操作环境的视图,包括进程树、网络、用户ID和装载的文件系统和名称空间。
2008年,IBM工程师添加了一层用户空间工具,以使嵌入式开发人员更喜欢该技术。
2014年,LXC 1.0版本通过利用现有的Linux技术(如seccomp和SELinux)进一步解决了LXC的安全问题,以控制和防止恶意代码从容器中溢出造成的DoS攻击。
LXC容器的工作原理是采用操作系统级虚拟化,允许多个Linux虚拟环境在共享硬件和基于Linux的操作系统内核上同时运行。这节省了开销成本,并允许构建应用程序以跨多种设备类型使用。本质上,LXC专注于系统和操作系统级的容器化,而这正是它们擅长的地方。
LXD–LXC容器的升级
LXD被描述为下一代系统容器。它通过可以连接到LXC库的RESTAPI增强了系统级的容器化。它用Go编写,创建了一个系统守护进程,应用程序通过HTTPS通过UNIX套接字访问,进一步扩展了分布式系统可移植性的可能性。LXD构建在LXC之上,并通过内核扩展其功能,而不是独立于操作系统。它的行为非常类似于带有虚拟机监控程序的VM,但没有资源开销。
Docker–集装箱化应用程序
虽然Linux容器主要在系统级,但Docker的重点是应用程序容器化。Docker于2013年推出,最初基于LXC,并添加了用户友好的工具,以吸引嵌入式开发人员寻找大型虚拟机的替代品。最终,Docker通过开发自己的集装箱化架构与LXC有所不同。
Docker和LXC共享类似的安全和进程隔离功能,确保运行的进程不会过度利用资源。然而,它们实际上是非常不同的技术——每个Docker容器运行单个虚拟化应用程序引擎,而LXC容器化系统或Linux操作系统用户区的不同组件。
Docker容器打包单个应用程序或应用程序组件,而不是客户操作系统,它有一个直接在主机操作系统上运行的Docker守护程序。此外,在嵌入式开发中,每个容器化应用程序都是独立运行的,不会影响主机中同时运行的任何其他应用程序。


 楼主| 智慧谋略 发表于 2022-8-24 01:06:19 | 显示全部楼层
 a.定义:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源
  b.意义:Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
  c.版本:Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了
  d.作用:
    1)提供一次性的环境:比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境
    2)提供弹性的云服务:因为 Docker 容器可以随开随关,很适合动态扩容和缩容
    3)组建微服务架构:通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构


2.安装Docker(Win7)
  a.访问 http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 下载最新版 DockerToolbox,并安装
    注:若已安装Git,则不用再选择Git组件安装。
  b.双击 Docker QuickStart 图标来启动 Docker Toolbox 终端
    注:若Docker未检测到Git安装目录,则需要选择 Git 的 bin 目录下的 bash.exe 文件。
  c.若出现 boot2docker.iso 一直无法下载的情况
    1)访问 https://github.com/boot2docker/boot2docker/releases/ 手动下载最新版的 boot2docker.iso
    2)将下好的 boot2docker.iso 复制到 C:\Users\Administrator\.docker\machine\cache 下
    3)双击 Docker QuickStart 启动 Docker Toolbox 终端


  d.执行命令 docker version 验证是否安装成功
#查看Docker版本$ docker version





3.Docker 容器使用
  a.image定义:image 文件可以看作是容器的模板。Docker 把应用程序及其依赖,打包在 image 文件里面,并根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
  b.查找镜像:访问 https://hub.docker.com/ 查找可用镜像


  c.基本指令:
    1)列出本地主机上的镜像
# 列出本机的所有 image 文件。$ docker image ls$ docker images
      ·REPOSITORY:表示镜像的仓库源
      ·TAG:镜像的标签,代表这个仓库源的不同个版本
      ·IMAGE ID:镜像ID
      ·CREATED:镜像创建时间
      ·SIZE:镜像大小

    2)删除本地主机上的镜像
# 删除 image 文件$ docker image rm ubuntu:20.04$ docker rmi ubuntu:20.04

    3)下载镜像到本地
#拉取 image 文件到本地$ docker pull ubuntu:20.04

    4)根据镜像启动容器
#根据 image 启动容器$ docker run -it ubuntu:20.04 /bin/bash
      ·-i: 交互式操作
      ·-t: 终端
      ·ubuntu:20.04:这是指用 ubuntu 20.04 版本镜像为基础来启动容器
      ·/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

    5)查看所有的容器
#查看正在运行的容器$ docker ps#查看所有容器,包括未运行的$ docker ps -a
      ·CONTAINER ID: 容器 ID。
      ·IMAGE: 使用的镜像。
      ·COMMAND: 启动容器时运行的命令。
      ·CREATED: 容器的创建时间。
      ·STATUS: 容器状态。
        ·状态有7种: created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡)
      ·PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
      ·NAMES: 自动分配的容器名称。

    6)启动一个已停止的容器
#启动一个已停止的容器$ docker start f69dbd3c27c4

    7)停止一个容器
#停止一个容器$ docker stop f69dbd3c27c4

    8)重启一个容器
#重启一个容器$ docker restart f69dbd3c27c4

    9)后台启动运行一个
#后台启动运行一个容器$ docker run -itd --name ubuntu-test ubuntu:20.04 /bin/bash

    10)进入容器
#进入容器(如果从这个容器退出,会导致容器的停止)$ docker attach 1e560fca3906 #进入容器(如果从这个容器退出,不会导致容器的停止)(推荐)$ docker exec -it 243c32535da7 /bin/bash

    11)删除容器
#删除容器$ docker rm -f 1e560fca3906

    12)导出容器
#导出容器$ docker export a8bf89afcbb6 > ./ubuntu.tar

    13)导入容器快照(导成镜像 image)
#导入容器快照$ cat ./ubuntu.tar | docker import - test/ubuntu:v1#导入容器快照("./ubuntu.tar"可为路径,也可为url)$ docker import ./ubuntu.tar test/ubuntu:v1

    14)更新镜像(提交容器副本成镜像 image)
#提交容器副本成镜像$ docker commit -m="this is content for commiting" -a="this is author" d66cef6d68bf runoob/ubuntu:v2
      ·-m:提交的描述信息
      ·-a:指定镜像作者
      ·d66cef6d68bf:容器 ID
      ·runoob/ubuntu:v2:指定要创建的目标镜像名

 楼主| 智慧谋略 发表于 2022-8-24 01:06:53 | 显示全部楼层
https://www.runoob.com/docker/windows-docker-install.html
Windows Docker 安装
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。

Docker 教程
Docker 教程Docker 架构
Docker 安装Ubuntu Docker 安装Debian Docker 安装CentOS Docker 安装Windows Docker 安装MacOS Docker 安装Docker 镜像加速Linux 云服务器
Docker 使用Docker Hello WorldDocker 容器使用Docker 镜像使用Docker 容器连接Docker 仓库管理Docker DockerfileDocker ComposeDocker MachineSwarm 集群管理
Docker 实例Docker 安装 UbuntuDocker 安装 CentosDocker 安装 NginxDocker 安装 Node.jsDocker 安装 PHPDocker 安装 MySQLDocker 安装 TomcatDocker 安装 PythonDocker 安装 RedisDocker 安装 MongoDBDocker 安装 Apache
Docker 参考手册Docker 命令大全Docker 资源汇总

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|探索掌握未知、共创美好未来

GMT+8, 2026-9-17 02:30 , Processed in 0.257627 second(s), 34 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表