docker初学习

从chroot、jail到LXC,容器技术经历数十年发展。2013年Docker横空出世,简化容器操作,提供统一镜像格式。Docker利用CGroups、命名空间,提供用户友好接口,配合DockerHub实现容器分发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器并不是新概念。几十年来,UNIX 系统一直以 chroot 命令来提供简单的文件系统隔 离。自 1998 年起,FreeBSD 有了jail 命令,它把chroot 的沙盒机制扩展至进程。2001 年 左右,Solaris Zones 提供了一个相对完整的容器化技术,但它只能用于 Solaris 操作系统。 同样在2001 年,Parallels 公司(当时称为SWsoft)推出用于Linux 的商业容器技术,名 为 Virtuozzo,并于 2005 年把核心技术开源,称其为 OpenVZ。3 然后,谷歌开始为 Linux 内核开发CGroups 机制,并开始将它的基础设施容器化。2008 年,Linux 容器(Linux Containers,LXC)项目启动,它把 CGroups、内核命名空间以及 chroot 等技术融合,提供 了一套完整的容器方案。最后,Docker 于 2013 年补充了当时容器化技术的不足,将容器 技术带入主流。
Docker 利用现有的 Linux 容器技术,以不同方式将其封装及扩展——主要是通过提供可移植的 镜像,以及一个用户友好的接口——来创建一套完整的容器创建及发布方案。Docker 平台拥有 两个不同部分:负责创建与运行容器的 Docker 引擎,以及用来发布容器的云服务 Docker Hub。
Docker 引擎提供了一个快速且便捷的接口用来运行容器。在此之前,使用如 LXC 等技术 运行容器需要相当多的专业知识以及手动操作。Docker Hub 提供大量的公共容器镜像以供 下载,方便用户快速上手,并且避免了重复劳动。Docker 还进一步开发了更多的工具,如 集群管理工具 Swarm、用于处理容器的图形用户界面 Kitematic,以及部署 Docker 主机的 命令行工具 Machine。

==============================================

chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。

==================

 LXC 以及联合文件系统(ofilee)

LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。

联合文件系统

联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。

联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

另外,不同 Docker 容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。

Docker 中使用的 AUFS(AnotherUnionFS)就是一种联合文件系统。 AUFS 支持为每一个成员目录(类似 Git 的分支)设定只读(readonly)、读写(readwrite)和写出(whiteout-able)权限, 同时 AUFS 里有一个类似分层的概念, 对只读权限的分支可以逻辑上进行增量地修改(不影响只读部分的)。

Docker 目前支持的联合文件系统种类包括 AUFS, btrfs, vfs 和 DeviceMapper。

==============================================

===========================================================

Docker集群管理工具

通用的容器格式与运行环境的标准

=============================================

稳定且生产就绪的容器引擎

容器的服务编排和网络连接

===================================

系统架构可以通过执行uname -m查询

 

可以通过http://get.docker.com提供的脚本来安装Docker

执行curl  -sSL | sh 或wget -q0- |sh就可以了

 wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。

============================================

查看SELinux处于什么模式,可以通过执行sestatus命令的结果查看

=========================================

不使用sudo命令执行docker

一个可行的解决方法是把用户放进 docker 用户组

sudo usermod -aG docker $USER

============================================

debian参数是我们打算使用的镜像

请求docker提供一个容器中的shell

docker run -i -t debian /bin/shell

-i -t参数表示我们想要一个附有tty的交互会话

/bin/bash参数表示你想获得一个bash shell.

当你退出shell时,容器就会停止

========================================

我们打算将一个名为cowsay的应用docker化。

首先启动一个容器,并安装一些包

docker  run  -it --name cowsay --hostname cowsay debian bash

执行docker commit时,你需要提供的参数包括:

容器的名称cowsay,新镜像的名称cowsayimage,用来存放镜像的仓库名称test

现在,我们创建了一个能随时使用,并且已安装cowsay的镜像

docker run  test/cowsayimage /usr/games/cowsay "Moo"

=============================================================

Docker的镜像由多个不同的“层”组成

当一个镜像被转化成一个容器时,docker引擎会在镜像之上添加一个处于最上层的可读写文件系统

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值