站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

docker生态圈有哪些

时间:2022-05-12 [网络编程]作者:fabuyuan 浏览:4 次

生态圈有:1、Docker Hub,是预先写好的Dockerfile网资源,提供公共的和私人的镜像存储库;2、Docker Engine,是用来运行和管理容器的核心软件;3、Kitematic,是一个可视化管理工具;4、Machine等。

本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。

Docker是一个用来创建“容器”的工具,这些容器仅仅包含你所需要的一个独立的应用或者技术堆栈。与虚拟机不同的是,这些容器共享相同的资源来管理容器与主机之间的相互作用。这一点使得Docker容器快速、轻量、安全并且共享。

当前可用的Docker生态系统存在部分,包括:Docker Hub、Docker Engine、Kitematic、Docker Machine、Swarm、Docker Compose、Dokcer Cloud以及Data Center,下面会详细介绍这些工具的功能,以及怎样能够更好地将这些工具结合起来。

Docker Hub

任何使用Docker的项目的核心是一个 Dockerfile 文件。这个文件包含Docker如何创建一个镜像的指示说明。让我们来看一个简单的例子:

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt

在这个例子中,该Dockerfile文件拉取一个特定版本的现有镜像,将当前本地目录复制进容器的文件系统,并设置它为工作目录,然后通过pip命令从一个文本文件下载Python依赖。

Docker Hub 是预先写好的Dockerfile网资源,提供公共的(免费的)和私人的(付费的)镜像存储库。如果你正在寻找一个Dockerfile来满足你的需求,首先在Docker Hub上搜索,使用项目文档、下载量和镜像等级来帮助指导你的决定。

Docker Engine(引擎)

Docker Engine(引擎)是用来运行和管理容器的核心软件。通常人们会简单地将其代指为 Docker 或 Docker 平台。Docker 引擎由许多专用的工具协同工作,从而可以创建和运行容器,例如 API、执行驱动、运行时、shim 进程等。

Docker Engine创建Dockerfile文件并把它们转化为可用的容器。Docker Engine是Docker的核心,如果没有Docker Engine那么什么也运行不了。依据你的操作系统不同有几种下载Docker Engine的方案,你可以 在这里发现更多的细节 。

依据Docker Hub中的一个镜像开启一个容器,应该首先拉取这个镜像并运行它。继续以Python为例:

docker pull python
docker run -it --rm --name script-name -v "$PWD":/usr/src/appname -w /usr/src/appname python:3 python app.py

这样就会拉取最新的Python镜像然后开启一个容器运行一个Python脚本并且运行完后退出容器。run命令提供了更多的选项设置,你可以 在这里阅读完整的指南 。

当一个Docker run命令开始变得更为复杂,它可以创建自己的自定义Dockerfile文件或许是一个更好的主意。开启一个基于本地Dockerfile文件的容器,运行以下里面包含文件的目录:

docker build -t my_image .

这个命令将会创建一个名为my_image的镜像。运行以下命令开启一个基于这个镜像的容器:

docker run -name my_image_container -i -t my_image

这个命令会开启一个基于自定义的my_image镜像的容器,这个容器命名为my_image_container。

Kitematic(Docker可视化管理工具)

对于那些宁愿避免命令行的用户来说, Kitematic 是一个 Docker GUI 工具,它可以更快速、更简单的运行Docker容器,现在已经支持 Mac /Windows/Linux

搜索你需要的镜像,创建一个容器,你最好去Kitematic。Kitematic提供了基本的配置选项,但对于更高级的设置,你可能需要进入命令行。

你的容器出现在左手边,在那里它们可以被启动、停止、重启,更有用的是,你可以在那里找到容器日志和直接SSH(exec按键)访问。

Docker Machine和Swarm

生产中使用Docker的第一步是了解 Machine 和Swarm,它们为各种虚拟化和云服务提供商提供了一套简单的工具集用以移动和缩放他们的本地项目。

“生产中使用Docker的第一步是了解Machine和Swarm。”

例如,在Azure上创建一个Docker实例:

docker-machine create -d azure --azure-subscription-id="XXX" --azure-subscription-cert="/mycert.pem" ecodemo

这个命令使用预装的Docker创建一个Ubuntu 12.04-based虚拟机并命名为ecodemo。每个供应商都需要不同的参数和认证方法,这些默认设置可以被重写。在 这个文档 中可以阅读到更多的细节。

当与 Swarm 结合后,Machine可以创建Docker实例的集群,这个集群被视为一个单一的、大的Docker实例。每一个Swarm集群都需要一个master实例,这个master实例可以用下面的命令来创建:

docker-machine create
-d virtualbox
--swarm
--swarm-master
--swarm-discovery token://TOKEN_ID
swarm-master

这样就会在VirtualBox中创建一个Docker实例并且设置这个Docker实例为Swarm集群的一个master节点。TOKEN_ID非常重要,因为它可以帮助集群中的所有节点识别彼此。除了手动创建TOKEN_ID标识以外,Swarm也有 发现系统 来帮助你管理这个过程。

下面的命令使用相同的TOKEN_ID标识添加Docker实例到Swarm集群:

docker-machine create
-d virtualbox
--swarm
--swarm-discovery token://TOKEN_ID
swarm-node-n

swarm-node-n对于集群中的每一个节点来说都是一个唯一的名字。

现在,代替从单个虚拟机中开启容器,你可以在集群中开启容器,master节点将会把这个容器分配给最可用的和最有能力的节点。

Docker Compose

Compose 使得由多个组件(像容器)组成的应用程序更加简单,你可以开始使用一个命令在一个单一的配置文件中声明所有这些组件。

下面是一个Compose文件(称为docker-compose.yml)的例子,这个例子创建三个 Crate 数据库实例和一个 Laravel (用一些额外的配置)PHP框架实例。最重要的是,容器与Links配置选项相连。

crate1:
image: crate
ports:
- "4200:4200"
- "4300:4300"
crate2:
image: crate
crate3:
image: crate
volumes:
- ./data:/importdata
laravelcomposer:
image: dylanlindgren/docker-laravel-composer
volumes:
- /laravel-application:/var/www
command: --working-dir=/var/www install
links:
- crate1
laravelartisan:
image: dylanlindgren/docker-laravel-artisan
links:
- crate1
volumes_from:
- laravelcomposer
working_dir: /var/www
command: serve --host=0.0.0.0:8080
ports:
- "8000:8000"
- "8080:8080"

所有这些实例和它们的配置现在可以通过运行以下在同一目录中的docker-compose.yml文件的命令来开始:

docker-compose up

你可以使用相同的子命令作为Docker的命令来影响所有以docker-compose开始的容器。例如,docker-compose stop命令可以停止以docker-compose开始的容器。

Docker Cloud

容器的自动化管理和编排是Docker的主要功能,但却一直由第三方服务来提供,直到去年Docker获得了 Tutum(它支撑着Docker云) 。虽然没有完整的命令行工具(还没有),Docker云服务允许Docker Compose文件设置应用程序栈,所以它不是来自于生态型的其它部分的一个大的导流。

“容器的自动化管理是Docker的重要组成,但知道最近一直由第三方来提供。”

例如:

crate1:
image: crate
ports:
- "4200:4200"
- "4300:4300"
command: crate -Des.network.publish_host=_ethwe:ipv4_
crate2:
image: crate
command: crate -Des.network.publish_host=_ethwe:ipv4_
crate3:
image: crate
command: crate -Des.network.publish_host=_ethwe:ipv4_

这样就创建了同一个镜像的三个实例,其中一个手动设置主机与Docker之间的端口分配,其他的端口分配是自动的。我将很快重新访问command。

如果你想在超过一个节点(节点能够运行它可以管理的足够多的容器和一个私有仓库上扩展应用程序,Docker Cloud是有偿服务。这对于实验目的来说足够了。记住,Docker Cloud默认管理托管在第三方托管服务器上的容器,所以你也需要支付费用。使得Docker Cloud代理运行在任何你管理的Linux主机上是可能的,你可以 在这里找到操作指南 。

上面的截图显示了三个使用预先设定的规则运行在跨越两个数字海洋的实例上的Docker容器,这个预先设定的规则是根据你设置的参数来将容器分配给主机。它会自动确保你指定数量的容器始终在运行。

在之前的Docker Compose例子中,你可能已经注意到_ethwe:ipv4_。这是Docker Cloud的另外一个重要特征。许多分布式应用和服务依赖“ 服务发现 ”来找到同一服务的其他实例并进行通信。当在数据中心和物理机器上传播服务时,这往往需要实例的手动说明或者需要另一种方式来找到彼此。

Docker Cloud包括支持 Weave 在你的实际网络中创建一个“软”网络;所有的容器和应用都可以发现彼此,无论它们被托管在哪里。在上面的例子中,我们重写了向容器发出的默认命令,以确保它接收它需要使用此功能的信息。

Data Center

到目前为止,本文涉及的大部分工具都是你安装,主机,和支持的工具。对企业用户来说,他们寻找安全性、性能和支持较高的保证,Docker提供了 数据中心 。

它使用了覆盖这里的许多相同的工具包,但是增加了一个放置你的镜像的私有仓库,一个私有云,高级支持,和供应商可能吸引企业用户的第三方集成。这些包括LDAP and Active Directory用户管理,容器检测,和日志记录。

推荐学习:《docker视频教程

以上就是docker生态圈有哪些的详细内容,更多请关注站长家园其它相关文章!

本文标签:  Docker

转载请注明来源:docker生态圈有哪些

本文永久链接地址:https://www.adminjie.com/post/12217.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • php怎么判断两数组有几个值相同

      php怎么判断两数组有几个值相同

      方法:1、用array_intersect()比较数组,语法“array_intersect(数组1,数组2)”,会返回一个交集数组;2、用count()获取交...

    • linux怎么查看文件夹什么时候创建的

      linux怎么查看文件夹什么时候创建的

      方法:1、用“stat文件路径”命令获取文件的inode号;2、用“df-h”获取文件所在的磁盘路径;3、根据获取的文件inode号和磁盘路径,用“debu...

    • linux产生zombie的原因是什么

      linux产生zombie的原因是什么

      linux产生zombie(僵尸进程)的原因是:父进程产生子进程后,子进程先于父进程退出,但父进程没有处理子进程发出的退出信号,因此子进程就会被称为僵尸进程;此...

    • linux中unzip找不到命令怎么办

      linux中unzip找不到命令怎么办

      解决方法:1、利用“yumlist|grepzip/unzip”获取软件安装列表,没有结果说明没有安装;2、利用“yuminstallzip”命令安...

    • linux中grep怎么查找不包含

      linux中grep怎么查找不包含

      在linux中,可以利用grep命令的“-v”参数来查找不包含,grep命令用于查找文件中符合条件的字符串,当参数设置为“-v”时,表示反向选择,显示不包含匹配...

    热门文章