docker 入门6 - 部署 【翻译】
开始,第 6 部分:部署应用
先决条件
安装 Docker。
获取第 3 部分先决条件中所述的 Docker Compose。
获取 Docker Machine,如第 4 部分先决条件中所述。
阅读第 1 部分中的方向。
了解如何在第 2 部分中创建容器。
确保通过将
friendlyhello镜像推送到注册表来发布您创建的friendlyhello镜像。我们在这里那个使用共享镜像。确保镜像用作于已部署的容器。运行此命令,在信息中键入
username,repo, 和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 数据中心实际上需要两个步骤:
- 从 Docker 中心获取服务器操作系统的 Docker 企业版。
- 按照说明在您自己的主机上安装 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 - 部署 【翻译】的更多相关文章
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点)
最近阿里的面试官问我Docker是做什么用的,我记得之前360和美团,京东的都问过,但是一直没时间看,最近有时间了,系统的学习了一下Docker,在此做一下记录,方便各位看官学习交流 一.Docker ...
- Docker 入门指南——部署常用服务示例
MongoDB FROM centos:centos7 MAINTAINER The CentOS Project <cloud-ops@centos.org> RUN yum -y up ...
- docker入门篇 部署springboot项目
安装docker Ubuntu16.04安装Docker 使用docker 注册docker服务 systemctl enable docker systemctl status docker 然后在 ...
- Docker入门(七):部署app
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(六):Stacks
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(五):Swarms
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(四):服务(Services)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(三):容器(Containers)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
随机推荐
- Golang的文件处理方式-常见的读写
在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄.注意,标准输入 os.Stdin 和标准输出 os.Stdout ,他们的类型都是 *os.File 哟.在 ...
- 一文教你读懂Python中的异常信息
正文共:11813 字 2 图 预计阅读时间: 30 分钟 原文:https://realpython.com/python-traceback/ 译者:陈祥安 原文有所改动. 在写 Python 代 ...
- python与统计(龙族版)
因为我很喜欢龙族,额........我也很喜欢python这门语言.然后就结合了一下,用python了解了一下龙族四本书的人物出场次数及排名. <龙族1火之晨曦> 路明非 1877 诺诺 ...
- mysqldump定时任务生成备份文件内容为空解决方法
1问题:写好了一个mysqldump备份脚本(如图)直接执行可以正常生成备份文件,但在用crontab运行时却生成内容为空 2原因分析:由于mysqldump存在于全局环境变量mysql的bin下面, ...
- Clock Generator PLL with Integrated VCO_ADF4360-9
Clock Generator PLL with Integrated VCO_ADF4360-9 2和3之间需要有大于15ms的时间间隔
- Visual Studio2013的C语言编译器对C99标准的支持情况
Visual Studio2013终于开始比较良好地支持C99特性了.在此之前,如果用C语言写代码的话,变量名都需要放到函数体的前面部分,代码写起来十分别扭. 而Visual Studio2013中的 ...
- computer5 environment
luo@luo-All-Series:~/MyFile/Anaconda3$ luo@luo-All-Series:~/MyFile/Anaconda3$ luo@luo-All-Series:~/M ...
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_13-页面静态化-数据模型-轮播图DataUrl接口
要开发轮播图的DataUrl的接口 轮播图的配置的集合 xc-framework-model这个module下 CmsConfigModel的类的属性 定义接口 在api里面定义接口:CmsConfi ...
- JAVA 基础编程练习题47 【程序 47 打印星号】
47 [程序 47 打印星号] 题目:读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*. package cskaoyan; public class cskaoyan47 { ...
- [System.Serializable],
[System.Serializable]添加在类,枚举,结构前面,可以让该这些对象在inspector中显示 [SerializeField]是设置非public 成员对象在inspector中显示