生态圈有:1、Docker Hub,是预先写好的Dockerfile官方资源,提供公共的和私人的镜像存储库;2、Docker Engine,用于运行和管理容器的核心软件;3、Kitematic,是一个可视化管理工具;4、Machine和Swarm,为各种虚拟化和云服务提供商提供了一套简单的工具集用以移动和缩放它们的本地项目;5、Compose;6、Cloud;7、Center。
本教程操作环境: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生态圈有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

Docker和Jenkins整合指南可实现自动化持续集成和持续交付(CI/CD)。配置步骤包括:安装Docker和Jenkins,创建Jenkins管道,集成Docker,连接Jenkins和Docker。通过遵循这些步骤,可建立自动化CI/CD流程,缩短交付时间并提高软件质量。

离线安装 Docker 镜像需要以下步骤:1. 获取镜像 TAR 文件;2. 导出镜像文件;3. 传输镜像文件;4. 导入镜像文件;5. 验证镜像安装。

要运行 Docker 镜像,需要执行以下步骤:拉取镜像:使用 docker pull 命令拉取所需的镜像。创建容器:使用 docker run 命令创建容器,指定名称和端口映射。启动容器:使用 docker start 命令启动容器。观察日志:使用 docker logs 命令查看容器日志。停止容器:使用 docker stop 命令停止容器。终止容器:使用 docker rm 命令终止容器并删除数据。

可切换到国内镜像源,步骤如下:1. 编辑配置文件 /etc/docker/daemon.json,添加镜像源地址;2. 保存退出后,重启 Docker 服务 sudo systemctl restart docker,即可提升镜像下载速度和稳定性。

创建 Docker 镜像步骤:编写包含构建指令的 Dockerfile。在终端中构建镜像,使用 docker build 命令。标记镜像,使用 docker tag 命令分配名称和标签。

如何运行 Docker 命令?安装 Docker并启动守护程序。常用 Docker 命令:docker images:显示镜像docker ps:显示容器docker run:运行容器docker stop:停止容器docker rm:删除容器使用 Docker 命令与容器交互:docker exec:执行命令docker attach:附加控制台docker logs:显示日志docker commit:提交更改为镜像停止 Docker 守护程序:sudo systemctl stop doc

Docker镜像构建失败的故障排除步骤:检查Dockerfile语法和依赖项版本。检查构建上下文中是否包含所需源代码和依赖项。查看构建日志以获取错误详细信息。使用--target选项构建分层阶段以识别失败点。确保使用最新版本的Docker引擎。使用--t [image-name]:debug模式构建镜像以调试问题。检查磁盘空间并确保足够。禁用SELinux以防止干扰构建过程。向社区平台寻求帮助,提供Dockerfile和构建日志描述以获得更具体的建议。

数据卷容器是一种 Docker 容器,用于存储和管理持久数据。使用数据卷容器包括:1. 创建数据卷容器;2. 挂载数据卷;3. 在容器内使用数据卷。优点:持久性、共享数据、备份和恢复;缺点:性能、可移植性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。