Docker介绍以及原理分析

在我们传统的开发部署服务时,涉及到环境总会耗费很多的精力,容器化技术就给我们带来了很大的方便。容器可以配置一系列服务需要配置的环境,节省了我们配置环境的时间。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便,运行资源消耗小。Docker是现在容器化技术中非常流行成熟的技术。

Docker镜像

Docker镜像是一个特殊的文件系统,除了提供运行时所需的程序,库,资源,配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷,环境变量,用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Docker容器

镜像和容器的关系,就像Java中的类和实例一样,镜像是静态的定义,容器是镜像运行的实体。容器可以被创建,启动,停止,删除,暂停等。

Docker仓库

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储,分发镜像的服务,Docker Registry就是这样的服务。

Dockerfile定制镜像

我们可以通过Dockerfile定制自己的自定义镜像。Dockerfile是一个包含组合映像命令的文本文档。Docker通过读取Dockerfile中的指令自动生成映像。
Dockfile一般分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令。

Dockfile指令

FROM:指定基础镜像,必须是第一个命令
MAINTRAINER:维护者信息
RUN:构建镜像所执行的命令
ADD:将本地文件添加到容器中,可以访问网络资源
COPY:功能类似ADD,但是不能自动解压文件,也不能访问网络资源
CMD:容器启动时才进行调用。
ENTRYPOINT:配置容器,使其可执行化
LABEL:用于为镜像添加元数据
ENV:设置环境变量
EXPOSE:指定于外界交互的端口
VOLUME:用于指定持久化目录
WORKDIR:工作目录,类似于cd命令
USER:指定运行容器时的用户名或UID
ARG:用于指定传递给构建运行时的变量
ONBUILD:用于设置镜像触发器

Docker安装启动流程

1、安装依赖

docker依赖于系统的一些必要的工具,可以提前安装。

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加软件源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker-ce

yum clean all yum makecache fastyum -y install docker-ce

4、启动服务

通过systemctl启动服务

systemctl start docker

5、查看安装版本

这样子就安装成功了,启动服务以后可以使用docker version查看一下当前的版本。

docker version

Docker实现原理

Docker的原理是利用LXC来实现VM的功能。LXC提供一个共享kernel的OS级虚拟化方法,在执行时不用重复加载kernel,且container的kernel与host共享,因此可以大大加快container的启动过程,并显著减少资源消耗。在实际的测试中,基于LXC的虚拟化的IO和CPU性能几乎接近baremetal的性能。

Liunx Namespace
LXC实现的隔离性主要是来自kernel的namespace。其中pid,net,ipc,mnt,uts等namespace将container的进程,网络,消息,文件系统和hostname隔离开。

Control Groups
cgroups实现了对资源的配额和度量。cgroups的使用非常简单,提供类似文件的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值