标签: Docker容器

10张图带你深入理解Docker容器和镜像

这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。
%title插图%num

当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Docker统一文件系统(the union file system)的知识,然后回过头来再看Docker的命令,一切变得顺理成章,简单*了。

题外话:就我个人而言,掌握一门技术并合理使用它的*好办法就是深入理解这项技术背后的工作原理。通常情况下,一项新技术的诞生常常会伴随着媒体的大肆宣传和炒作,这使得用户很难看清技术的本质。更确切地说,新技术总是会发明一些新的术语或者隐喻词来帮助宣传,这在初期是非常有帮助的,但是这给技术的原理蒙上了一层砂纸,不利于用户在后期掌握技术的真谛。

Git就是一个很好的例子。我之前不能够很好的使用Git,于是我花了一段时间去学习Git的原理,直到这时,我才真正明白了Git的用法。我坚信只有真正理解Git内部原理的人才能够掌握这个工具。

Image Definition

镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。
%title插图%num

从左边我们看到了多个只读层,它们重叠在一起。除了*下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机(译者注:运行Docker的机器)的文件系统上访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。我们可以在图片的右边看到这个视角的形式。

你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现它们存在于/var/lib/docker/aufs目录下。


sudo tree -L 1 /var/lib/docker/

/var/lib/docker/├── aufs├── containers├── graph├── init├── linkgraph.db├── repositories-aufs├── tmp├── trust└── volumes7 directories, 2 files

 

Container Definition

容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的*上面那一层是可读可写的。
%title插图%num

细心的读者可能会发现,容器的定义并没有提及容器是否在运行,没错,这是故意的。正是这个发现帮助我理解了很多困惑。

要点:容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。

接下来,我们将会讨论运行态容器。

Running Container Definition

一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。
%title插图%num

正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write layer)。下面这张图展示了这个行为。
%title插图%num

我们可以通过运行以下命令来验证我们上面所说的:

docker run ubuntu touch happiness.txt

即便是这个ubuntu容器不再运行,我们依旧能够在主机的文件系统上找到这个新文件。


find / -name happiness.txt

/var/lib/docker/aufs/diff/860a7b…889/happiness.txt

 

Image Layer Definition

为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念。下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统的改变,它还能包含了其他重要信息。
%title插图%num

元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。需要注意,只读层和读写层都包含元数据。
%title插图%num

除此之外,每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于*底层。
%title插图%num

Metadata Location:
我发现在我自己的主机上,镜像层(image layer)的元数据被保存在名为”json”的文件中,比如说:

/var/lib/docker/graph/e809f156dc985.../json

e809f156dc985…就是这层的id

一个容器的元数据好像是被分成了很多文件,但或多或少能够在/var/lib/docker/containers/<id>目录下找到,<id>就是一个可读层的id。这个目录下的文件大多是运行时的数据,比如说网络,日志等等。

全局理解(Tying It All Together)

现在,让我们结合上面提到的实现细节来理解Docker的命令。
docker create <image-id>

%title插图%num

docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。
%title插图%num

 

docker start <container-id>

%title插图%num

Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。
docker run <image-id>

%title插图%num

看到这个命令,读者通常会有一个疑问:docker start 和 docker run命令有什么区别。
%title插图%num

从图片可以看出,docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。

题外话:继续我们之前有关于Git的话题,我认为docker run命令类似于git pull命令。git pull命令就是git fetch 和 git merge两个命令的组合,同样的,docker run就是docker create和docker start两个命令的组合。
docker ps

%title插图%num

docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。
docker ps –a

%title插图%num

docker ps –a命令会列出所有的容器,不管是运行的,还是停止的。
docker images

%title插图%num

docker images命令会列出了所有顶层(top-level)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。
docker images –a

%title插图%num

docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。
docker stop <container-id>

%title插图%num

docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。
docker kill <container-id>

%title插图%num

docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。
docker pause <container-id>

%title插图%num

docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。具体的内部原理你可以在这里找到:https://www.kernel.org/doc/Doc … m.txt,但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。
docker rm <container-id>

%title插图%num

docker rm命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。
docker rmi <image-id>

%title插图%num

docker rmi 命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除*顶层(top level layer)(也可以说是镜像),你也可以使用-f参数来强制删除中间的只读层。
docker commit <container-id>

%title插图%num

docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。
%title插图%num

 

docker build

%title插图%num

docker build命令非常有趣,它会反复的执行多个命令。
%title插图%num

我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。
docker exec <running-container-id>

%title插图%num

docker exec 命令会在运行中的容器执行一个新进程。
docker inspect <container-id> or <image-id>

%title插图%num

docker inspect命令会提取出容器或者镜像*顶层的元数据。
docker save <image-id>

%title插图%num

docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。
docker export <container-id>

%title插图%num

docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)。
docker history <image-id>

%title插图%num

docker history命令递归地输出指定镜像的历史镜像。

docker容器和虚拟机的区别

各种虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。那虚拟机与Docker究竟有何不同呢?

首先,大家需要明确一点,Docker容器不是虚拟机。

2014年,当我*次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker*初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家宣传,”虚拟机需要数分钟启动,而Docker容器只需要50毫秒”。

然而,Docker容器并非虚拟机,我们不妨来比较一下它们。

Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

说了这么多Docker的优势,大家也没有必要完全否定虚拟机技术,因为两者有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库

Docker容器该怎么使用

初学云计算要了解什么?Docker容器该怎么使用?Docker容器是一个开源的应用容器引擎,它能够自动执行重复性任务,例如搭建和配置开发环境,用户可以方便地创建和使用容器,还可以进行版本管理、复制、分享、修改。有很多初学云计算的人不清楚Docker容器的使用方法以及应用场景,接下来千锋小编就给大家简单分享一下。

%title插图%num

Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup、namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。目前Docker容器的应用场景包括以下几种:

Docker部署Mongodb环境

1、远程获取Mongodb镜像

docker pull mongo

2、创建一个docker容器

docker run -p 27017:27017 -v /data/db –name docker_mongodb -d mongo

在上面的命令中,几个命令参数的详细解释如下:

-p 指定容器的端口映射(特殊说明:前面的是本机端口,后面的是容器的端口,添加-p参数主动将容器内部端口给暴漏出来,将服务器的27017端口映射到容器的27017端口,这样在外网就可通过 服务器的27017端口访问到我们的服务,Mongodb默认端口为27017。

-v 为设置容器的挂载目录,这里是将即本机中的目录挂载到容器中的/data/db中,作为Mongodb的存储目录

–name 为设置该容器的名称

-d 设置容器以守护进程方式运行

3、测试连接容器中的Mongodb

Docker部署Node项目完整流程(DockerFile实践)

1、使用Koa2初始化一个Node项目,通过Mongose中间件连接Mogodb数据库,实现一个基础接口Mogodb插入数据。

2、在项目根目录下创建.dockerignore文件,把不需要打包进Docker Image里的文件进行过滤:

# /usr/src/nodejs/dockerstudy/.dockerignore

.git

node_modules

3、在项目的根目录中创建Dockerfile文件,部署Node项目的时候,会有一个Dockerfile 文件配置。

# /usr/src/nodejs/hello-docker/Dockerfile

FROM node:10.0

# 在容器中创建一个目录

RUN mkdir -p /usr/src/nodejs/

# 定位到容器的工作目录

WORKDIR /usr/src/nodejs/

# RUN/COPY 是分层的,package.json 提前,只要没修改,就不会重新安装包

COPY package.json /usr/src/app/package.json

RUN cd /usr/src/app/

RUN npm i

# 把当前目录下的所有文件拷贝到 Image 的 /usr/src/nodejs/ 目录下

COPY . /usr/src/nodejs/

EXPOSE 3000

CMD npm start

4、代码环节暂且告一段落,将带有Dockerfile提交到github或gitlab等。

5、首先检出代码,把项目克隆到指定目录。

6、进入目录构建。

7、通过镜像dockerstudy创建一个容器并运行。

8、进入容器。

9、日志检查查看运行日志。

优雅部署方式 DockerCompose

Compose是Docker官方开源的一个项目,可以管理多个Docker容器组成一个应用,例如Web服务,除了服务本身还有数据库、Redis、Nginx等一系列相关联服务需要安装。有个Compose的支持,我们只需要定义一个YAML格式的配置文件(docker-compose.yml),来编写一个项目所需要的多个容器配置及调用关系,通过简单的命令即可同时开始或者关闭这些容器。Compose定位是定义和运行多个Docker容器的应用。

 

云计算为什么要学Docker容器 该怎样快速入门

云计算为什么要学Docker容器?该怎样快速入门?“云计算”作为未来网络甚至未来计算机行业的发展趋势,得到了广泛重视。越来越多的人想通过学习云计算收获高薪,很多人会发现学习云计算的过程中会接触到Docker容器,这究竟是为什么?如何快速高效的学好Docker容器、进而学好云计算呢?下面且看小编的分析。

%title插图%num

Docker是基于Linux 容器技术的开源项目,它使用Luinux的内核功能(如命名空间和控制组)在操作系统上创建容器。Docker容器具有四大优势:

1)使用简单:Docker 的口头禅是:“一次构建,处处运行”。它使得任何人(开发人员,运维,架构师和其他人)都可以更轻松的利用容器的优势来快速构建和测试可移植的应用程序。

2)速度:Docker容器非常轻量级和快速,因为容器只是运行在内核上的沙盒环境,因此它们占用的资源更少。与可能需要更多时间来创建的虚拟机相比,你可以在几秒钟内创建一个Docker容器。

3)Docker Hub:Docker Hub拥有数万个由社区构建的公共镜像,这些镜像都是随时可用的。Docker用户可以从日益丰富的Docker Hub生态中受益,可以把Docker Hub看作是“Docker 镜像的应用商店”。

4)模块化和可扩展性:Docker可以让你轻松地把应用程序按功能拆分为单个独立的容器。使用Docker,将这个容器链接在一起以创建你的应用程序将会变得更简单,同时在将来可以很轻松地扩展和更新单独的组件。

想要快速入门Docker容器技术,你需要了解Docker容器的安装与启动、镜像操作、应用部署、备份与迁移等知识。同时,Docker容器技术多是与云计算相结合,想要学好Docker找到好工作,参加专业的云计算培训班是明智的。

如果你想成为一个优秀的云计算人才,要掌握Linux知识,了解数据库知识、Docker容器、Shell脚本运维、Python语言等,如果你想快速掌握这一系列的技术,专业的学习让你高效、快速掌握企业所需的高薪技术!

云计算人才必备什么技能 怎么学好Docker容器

云计算人才必备什么技能?怎么学好Docker容器?Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装Docker引擎的服务器上,也可以实现虚拟化。

随着云计算的飞速发展以及企业需求的多样化,Docker容器技术成为云计算人才必备的技能之一。很多人想要快速掌握Docker容器技术,接下来就给大家讲解Docker容器的四种网络模式。

%title插图%num

1、closed container 封闭式网络模式

没有网络协议栈的通信

使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo网络接口。需要我们自己为Docker容器添加网卡、配置IP等。

2、bridged container 桥接式网络模式

各个容器之间网络协议栈单独分离

当Docker启动时,会自动在主机上创建一个docker0虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机,它会在挂载到它的网口之间进行转发。同时,Docker随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给docker0接口。当创建一个Docker容器的时候,同时会创建了一对veth pair 接口。这对接口一端在容器内,即eth0;另一端在本地并被挂载到docker0网桥,名称以veth开头。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker就创建了在主机和所有容器之间一个虚拟共享网络。

3、joined container 联合挂载式网络模式

容器之间可以共享网络协议栈,即可以通过套接字来进行通信

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

4、opentainer container 开放式网络模式

与主机共享网络协议栈

Host模式使用是在容器启动时候指明–network host,此时容器共享宿主机的Network Namespace,容器内启动的端口直接是宿主机的端口,容器不会创建网卡和IP,直接使用宿主机的网卡和IP,但是容器内的其他资源是隔离的,如文件系统、用户和用户组。直接使用宿主机网络。同样启动一个nginx,此时共享主机网络,根据情况来使用,这样子也不用做端口转发,网络传输效率会比较高。

如果你想快速掌握Docker容器,学好云计算开发,专业的学习让你高效、快速掌握企业所需的高薪技术!学完后可胜任运维工程师、云计算工程师以及Web渗透测试工程师等岗位。

怎么掌握云计算核心技术 Docker容器怎么回事

怎么掌握云计算核心技术?Docker容器怎么回事?Docker容器是一个开源的应用容器引擎,随着云计算的迅猛发展而被人们熟知。一个合格的云计算工程是一定要熟练掌握Docker容器技术,接下来小编就给大家梳理汇总Docker容器相关知识。

%title插图%num

Docker主要有如下几个概念:

引擎:创建和管理容器的工具,通过读取镜像来生成容器,并负责从仓库拉取镜像或提交镜像到仓库中;

镜像:类似于虚拟机镜像,一般由一个基本操作系统环境和多个应用程序打包而成,是创建容器的模板;

容器:可看作一个简易版的Linxu系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子;

仓库:集中存放镜像文件的场所,分为公共仓库和私有仓库,目前*大的公共仓库是官方提供的Docker Hub,此外国内的阿里云、腾讯云等也提供了公共仓库;

宿主机:运行引擎的操作系统所在服务器。

Docker镜像采用分层存储格式,每个镜像可依赖其他镜像进行构建,每一层的镜像可被多个镜像引用。这种分层结构能充分共享镜像层,能大大减少镜像仓库占用的空间,而对用户而言,他们所看到的容器,其实是Docker利用UnionFS(联合文件系统)把相关镜像层的目录“联合”到同一个挂载点呈现出来的一个整体。

什么是UnionFS?UnionFS可以把多个物理位置独立的目录(也叫分支)内容联合挂载到同一个目录下,UnionFS允许控制这些目录的读写权限,此外对于只读的文件和目录,它具有“Copy on Write(写实复制)”的特点,即如果对一个只读的文件进行修改,在修改前会先把文件复制一份到可写层(可能是磁盘里的一个目录),所有的修改操作其实都是对这个文件副本进行修改,原来的只读文件并不会变化。

UnionFS有很多种,其中Docker中常用的是AUFS,这是UnionFS的升级版,除此之外还有DeviceMapper、Overlay2、ZFS和 VFS等。Docker镜像的每一层默认存放在/var/lib/docker/aufs/diff目录中,当用户启动一个容器时,Docker引擎首先在/var/lib/docker/aufs/diff中新建一个可读写层目录,然后使用UnionFS把该可读写层目录和指定镜像的各层目录联合挂载到/var/lib/docker/aufs/mnt里的一个目录中(其中指定镜像的各层目录都以只读方式挂载),通过LXC等技术进行环境隔离和资源控制,使容器里的应用仅依赖mnt目录中对应的挂载目录和文件运行起来。

利用UnionFS写实复制的特点,在启动一个容器时, Docker引擎实际上只是增加了一个可写层和构造了一个Linux容器,这两者都几乎不消耗系统资源,因此Docker容器能够做到秒级启动,一台服务器上能够启动上千个Docker容器,而传统虚拟机在一台服务器上启动几十个就已经非常吃力了,而且虚拟机启动很慢,这是Docker相比于传统虚拟机的两个巨大的优势。

Docker镜像制作方法

1)通过正在运行的容器生成新镜像。当一个容器在运行时,在里面所有的修改都会体现在容器的可写层,Docker提供了commit命令,可以把正在运行的容器,叠加上可写层的修改内容,生成一个新镜像。

2)通过Dockerfile文件来生成新镜像。Dockerfile是一个定义了镜像创建步骤的文件,Docker引擎通过build命令读取Dockerfile,按定义的步骤来一步步构造镜像。在研发和实施环境中,通过Dockerfile 创建容器是主流做法。

如果你想了解更多Docker容器技术,想快速加入云计算开发行列,你可以选择专业学习一下,让自己快速系统的掌握企业所需的云计算核心技术!

初学云计算要了解什么 Docker容器该怎么使用

初学云计算要了解什么?Docker容器该怎么使用?Docker容器是一个开源的应用容器引擎,它能够自动执行重复性任务,例如搭建和配置开发环境,用户可以方便地创建和使用容器,还可以进行版本管理、复制、分享、修改。有很多初学云计算的人不清楚Docker容器的使用方法以及应用场景,接下来就给大家简单分享一下。

%title插图%num

Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup、namespace以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。目前Docker容器的应用场景包括以下几种:

Docker部署Mongodb环境

1、远程获取Mongodb镜像

docker pull mongo

2、创建一个docker容器

docker run -p 27017:27017 -v /data/db –name docker_mongodb -d mongo

在上面的命令中,几个命令参数的详细解释如下:

-p 指定容器的端口映射(特殊说明:前面的是本机端口,后面的是容器的端口,添加-p参数主动将容器内部端口给暴漏出来,将服务器的27017端口映射到容器的27017端口,这样在外网就可通过 服务器的27017端口访问到我们的服务,Mongodb默认端口为27017。

-v 为设置容器的挂载目录,这里是将即本机中的目录挂载到容器中的/data/db中,作为Mongodb的存储目录

–name 为设置该容器的名称

-d 设置容器以守护进程方式运行

3、测试连接容器中的Mongodb

Docker部署Node项目完整流程(DockerFile实践)

1、使用Koa2初始化一个Node项目,通过Mongose中间件连接Mogodb数据库,实现一个基础接口Mogodb插入数据。

2、在项目根目录下创建.dockerignore文件,把不需要打包进Docker Image里的文件进行过滤:

# /usr/src/nodejs/dockerstudy/.dockerignore

.git

node_modules

3、在项目的根目录中创建Dockerfile文件,部署Node项目的时候,会有一个Dockerfile 文件配置。

# /usr/src/nodejs/hello-docker/Dockerfile

FROM node:10.0

# 在容器中创建一个目录

RUN mkdir -p /usr/src/nodejs/

# 定位到容器的工作目录

WORKDIR /usr/src/nodejs/

# RUN/COPY 是分层的,package.json 提前,只要没修改,就不会重新安装包

COPY package.json /usr/src/app/package.json

RUN cd /usr/src/app/

RUN npm i

# 把当前目录下的所有文件拷贝到 Image 的 /usr/src/nodejs/ 目录下

COPY . /usr/src/nodejs/

EXPOSE 3000

CMD npm start

4、代码环节暂且告一段落,将带有Dockerfile提交到github或gitlab等。

5、首先检出代码,把项目克隆到指定目录。

6、进入目录构建。

7、通过镜像dockerstudy创建一个容器并运行。

8、进入容器。

9、日志检查查看运行日志。

优雅部署方式 DockerCompose

Compose是Docker官方开源的一个项目,可以管理多个Docker容器组成一个应用,例如Web服务,除了服务本身还有数据库、Redis、Nginx等一系列相关联服务需要安装。有个Compose的支持,我们只需要定义一个YAML格式的配置文件(docker-compose.yml),来编写一个项目所需要的多个容器配置及调用关系,通过简单的命令即可同时开始或者关闭这些容器。Compose定位是定义和运行多个Docker容器的应用。

想快速掌握Docker容器技术,你可以专业学习一下,学完后可胜任运维工程师、云计算工程师以及Web渗透测试工程师等岗位!

 

云计算未来发展趋势怎样 热门开源技术有哪些

云计算未来发展趋势怎样?热门开源技术有哪些?随着开源软件的普及以及云计算的迅猛发展,越来越多的人将开源与云计算结合起来使用,想要学习开源云计算技术的人与日俱增。为了更快更好的入行,很多人选择专业学习。下面且看千锋小编的分析。

%title插图%num

事实上,开源与云计算是两种不同的概念,云计算与开源密切结合的背后有两大促进因素:

1)开源云计算有助于打破亚马逊和谷歌等的技术垄断;

2)开源云计算平台提供了一个平等参与事实标准形成的机会。

当下热门的开源云计算技术有很多,比如OpenStack、Docker容器。

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。

Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。*重要的是,他们不依赖于任何语言、框架包括系统。

了解云计算未来的发展趋势很重要,但更重要的是你需要掌握企业所需的技术、具备较多的实战经验。如果你想快速掌握企业所需的云计算技术,可以选择专业学习一下,让自己求职起点更高、就业速度更快!

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速