开始,第 6 部分:部署应用

先决条件

  • 安装 Docker。

  • 获取第 3 部分先决条件中所述的 Docker Compose。

  • 获取 Docker Machine,如第 4 部分先决条件中所述。

  • 阅读第 1 部分中的方向。

  • 了解如何在第 2 部分中创建容器。

  • 确保通过将friendlyhello镜像推送到注册表来发布您创建的friendlyhello镜像。我们在这里那个使用共享镜像。

  • 确保镜像用作于已部署的容器。运行此命令,在信息中键入usernamerepo, 和 tag:docker run -p 80:80 username/repo:tag,然后访问http://localhost/

  • 获取第 5 部分的 docker-compose.yml 的最终版本。

介绍

您一直在为整个教程编辑相同的Compose文件。我们有好消息,该Compose文件在生产环境中的工作方式与在您的计算机上一样好。在本节中,我们将介绍运行 Dockerized 应用程序的一些选项。

Docker Enterprise

Docker Enterprise 企业版的客户运行了稳定、商业支持的 Docker Engine版本,作为附加组件,他们得到了我们一流的管理软件 ,Docker 数据中心。您可以使用通用控制面板(Universal Control Plane)的界面管理应用程序的各个方面,使用 Docker 可信registry运行专用镜像Registry,与 LDAP 提供程序集成,使用 Docker 内容信任对生产环境镜像进行签名,以及许多其他特征。

将您自己的服务器引入 Docker Enterprise并设置 Docker 数据中心实际上需要两个步骤:

  1. 从 Docker 中心获取服务器操作系统的 Docker 企业版。
  2. 按照说明在您自己的主机上安装 Docker 企业版。

注意:正在运行 Windows 容器?查看我们的 Windows 服务器设置指南

完成所有设置并运行 Docker 企业版后,可以直接在 UI 中部署Compose文件。

之后,您可以看到它正在运行,并且可以更改您选择的应用程序的任何方面,甚至编辑Compose文件本身。

Docker Engine - Community

安装 Docker Engine --- Community

在您选择的平台上查找 Docker Engine---Community的安装说明。

创建您的swarm

运行 docker swarm init 在节点上创建一个swarm。

部署应用

运行 docker stack deploy -c docker-compose.yml getstartedlab ,将应用部署在云托管swarm上。

docker stack deploy -c docker-compose.yml getstartedlab

Creating network getstartedlab_webnet
Creating service getstartedlab_web
Creating service getstartedlab_visualizer
Creating service getstartedlab_redis

你的应用现在在云提供商上运行。

运行一些命令来验证部署

您可以使用swarm命令行(正如您所做的那样)来浏览和管理swarm。下面是一些现在应该看起来熟悉的示例:

  • 使用 docker node ls 列出群中的节点。

    [getstartedlab] ~ $ docker node ls
    ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
    n2bsny0r2b8fey6013kwnom3m * ip----.us-west-.compute.internal Ready Active Leader
  • 使用 docker service ls 列出服务。

    [getstartedlab] ~/sandbox/getstart $ docker service ls
    ID NAME MODE REPLICAS IMAGE PORTS
    ioipby1vcxzm getstartedlab_redis replicated / redis:latest *:->/tcp
    u5cxv7ppv5o0 getstartedlab_visualizer replicated / dockersamples/visualizer:stable *:->/tcp
    vy7n2piyqrtr getstartedlab_web replicated / sam/getstarted:part6 *:->/tcp
  • 使用 docker service ps <service> 查看服务的任务。

    [getstartedlab] ~/sandbox/getstart $ docker service ps vy7n2piyqrtr
    ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
    qrcd4a9lvjel getstartedlab_web. sam/getstarted:part6 ip----.us-west-.compute.internal Running Running seconds ago
    sknya8t4m51u getstartedlab_web. sam/getstarted:part6 ip----.us-west-.compute.internal Running Running seconds ago
    ia730lfnrslg getstartedlab_web. sam/getstarted:part6 ip----.us-west-.compute.internal Running Running seconds ago
    1edaa97h9u4k getstartedlab_web. sam/getstarted:part6 ip----.us-west-.compute.internal Running Running seconds ago
    uh64ez6ahuew getstartedlab_web. sam/getstarted:part6 ip----.us-west-.compute.internal Running Running seconds ago

在云提供商计算机上打开到服务的端口

此时,你的应用将作为swarm部署在云提供商服务器上,您刚刚运行的 docker 命令就证明了这一点。但是,您仍然需要打开云服务器上的端口,以便:

  • 如果使用多个节点,则允许 redis 服务和 Web 服务之间的通信

  • 允许任何辅助节点上的 Web 服务入站流量,以便从 Web 浏览器访问 Hello World 和Visualizer。

  • 允许在运行manager的服务器上的入站 SSH 流量(这可能已在云提供商上设置)

以下是您需要为每个服务公开的端口:

Service Type Protocol Port
web HTTP TCP 80
visualizer HTTP TCP 8080
redis TCP TCP 6379

执行此操作的方法因云提供商而异。

我们以亚马逊网络服务 (AWS) 为例。

用于保留数据的 redis 服务如何?

要使 redis 服务正常工作,您需要在运行 docker stack deploy之前,将 ssh 到运行manager的云服务器中,并在 /home/docker/ 中创建data/目录。另一个选项是将 docker-stack.yml 中的数据路径更改为manager服务器上的预先存在的路径。此示例不包括此步骤,因此在示例输出中未启动 redis 服务。

迭代和清理

从这里,你可以做你学到的一切在本教程的前一部分。

  • 通过更改 docker-compose.yml 文件,使用 docker stack deploy命令动态重新部署应用来扩展应用。

  • 通过编辑代码更改应用行为,然后重新生成并推送新镜像。(为此,请按照之前为构建应用和发布镜像所执行的相同步骤进行操作)。

  • 您可以使用 docker stack rm 拆解stack。例如:

    docker stack rm getstartedlab

与在本地 Docker machine VM 上运行swarm的情况不同,无论是否关闭本地主机,您的swarm及其上部署的任何应用都会在云服务器上继续运行。

祝贺!

您对整个 Docker 平台进行了全堆栈,开发到部署的浏览。

Docker 平台的内容远不止此处介绍的内容,但您对容器、镜像、服务、swarm、stack、缩放、负载平衡、volume和placement constraints等基础知识有了很好的了解。

想深入一点吗?以下是一些建议的资源:

  • 示例:我们的示例包括多个在容器中运行的常用软件示例,以及一些教授最佳实践的良好实验室。

  • 用户指南:用户指南有几个示例,这些示例对网络和存储的解释比此处介绍的要深入。

  • 管理员指南:介绍如何管理 Docker 实现的生产环境。

  • 培训:提供面对面指导和虚拟课堂环境的官方 Docker 课程。

  • 博客:介绍 Docker 最近发生的情况。

docker 入门6 - 部署 【翻译】的更多相关文章

  1. docker入门与部署微服务--学习笔记

    最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...

  2. Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)

    最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...

  3. Docker 入门指南——部署常用服务示例

    MongoDB FROM centos:centos7 MAINTAINER The CentOS Project <cloud-ops@centos.org> RUN yum -y up ...

  4. docker入门篇 部署springboot项目

    安装docker Ubuntu16.04安装Docker 使用docker 注册docker服务 systemctl enable docker systemctl status docker 然后在 ...

  5. Docker入门(七):部署app

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  6. Docker入门(六):Stacks

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  7. Docker入门(五):Swarms

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  8. Docker入门(四):服务(Services)

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  9. Docker入门(三):容器(Containers)

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

随机推荐

  1. Linux设备驱动程序 之 tasklet

    多数情况下,为了控制一个寻常的硬件设备,tasklet机制都是实现自己下半部的最佳选择:tasklet可以动态创建,使用方便,执行起来还算快: 声明tasklet tasklet既可以静态的创建,也可 ...

  2. 安装Chrome扩展程序xpath

    最近工作用到xpath,直接从浏览器复制下来路径时常会出错而且长度很长,于是我想到之前用过的一款chrome插件,可以直接编写xpath语句,并实时出现解析出的结果,检验xpath语句是否编写正确.效 ...

  3. Kotlin入门-Android的基础布局

    线性布局线性布局LinearLayout是最常用的布局,顾名思义,它下面的子视图像是用一根线串了起来,所以其内部视图的排列是有顺序的,要么从上到下垂直排列,要么从左到右水平排列.排列顺序只能指定一维方 ...

  4. Swift 基本语法

    如果创建的是 OS X playground 需要引入 Cocoa : import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, Wo ...

  5. Qt编写数据可视化大屏界面电子看板5-恢复布局

    一.前言 恢复布局这个功能在整个数据可视化大屏界面电子看板系统中非常有用,很多时候不小心把现有布局拖动乱了,(当然如果不想布局被拖动改动,可以修改配置文件中的MoveEnable参数来控制,默认为真表 ...

  6. opengl球形网格生成

    效果如图 准备第三方库 glew.freeglut.glm 代码包括主程序源文件mainApp.cpp.顶点着色器shader.vs.片元着色器shader.fs   mainApp.cpp如下 #i ...

  7. npm install, npm install -g, npm install --save, npm install --save-dev之间的区别

    1.npm install X 安装X到项目的node_modules文件夹 会修改package.json,在dependencies中写入依赖.(关于这一点,网上的大部分文章都是说,不会修改pac ...

  8. Django:(06)Django模版

    一.模版的使用 配置 如果是命令行创建的项目需要手动配置模版文件目录(如果是Pycharm创建的项目则无需配置) 在项目根目录下创建目录templates, 用来存放模版文件 在项目的配置文件夹set ...

  9. Go语言中defer语句使用小结

    defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源.关闭数据库连接.断开socket连接.解锁一个加锁的资源.Go语言机制担保一定会执行defer语句中的代 ...

  10. Debezium系列随笔

    0.Debezium简介 1.Run Debezium for Mysql in docker step by step 2.Run Debezium for SQLServer in docker ...