firendlyhello
镜像,我们在本文中将使用这个已分享的公共镜像。docker run -p 80:80 username/repo:tag
,使用你的用户名(username
)、仓库名(repo
)和标签名(tag
)对应替换即可。然后使用http://localhost
进行访问docker-compose.yml
最终版副本。你已经编写了与整个教程相同的compose文件。令人很高兴的这个文件在生产环境中也可以很好的工作。在这一部分,我们将介绍一些运行docker应用的选项。
Docker Enterprise Edition的客户运行稳定的,商业支持的Docker Engine版本,还有附带一套一流的管理软件Docker Datacenter作为附件。 您可以使用通用控制平面界面管理应用程序的各个方面,使用Docker Trusted Registry运行私有镜像注册服务,与LDAP程序集成,使用Docker Content Trust签署生产镜像以及许多其他功能。
在你的服务器上使用Docker商业版和配置Docker Datacenter主要涉及两个步骤:
注意:运行Windows容器? 查看我们的Windows Server安装指南。
一旦完成设置并且Docker商业版正在运行,您就可以直接在UI中部署Compose文件。
之后,您可以看到它正在运行,并且可以更改您选择的应用程序的任何方面,甚至可以编辑Compose文件本身。
获取您所选择系统的docker社区版安装包。
运行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
列出swarm中的节点。
[getstartedlab] ~ $ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
n2bsny0r2b8fey6013kwnom3m * ip-172-31-20-217.us-west-1.compute.internal Ready Active Leader
使用docker service ls
列出服务。
[getstartedlab] ~/sandbox/getstart $ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ioipby1vcxzm getstartedlab_redis replicated 0/1 redis:latest *:6379->6379/tcp
u5cxv7ppv5o0 getstartedlab_visualizer replicated 0/1 dockersamples/visualizer:stable *:8080->8080/tcp
vy7n2piyqrtr getstartedlab_web replicated 5/5 sam/getstarted:part6 *:80->80/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.1 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 20 seconds ago
sknya8t4m51u getstartedlab_web.2 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 17 seconds ago
ia730lfnrslg getstartedlab_web.3 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago
1edaa97h9u4k getstartedlab_web.4 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 21 seconds ago
uh64ez6ahuew getstartedlab_web.5 sam/getstarted:part6 ip-172-31-20-217.us-west-1.compute.internal Running Running 22 seconds ago
此时,您的应用程序将作为swarm部署在云提供程序服务器上,正如您刚刚运行的docker命令所证明的那样。 但是,您仍需要在云服务器上打开端口,以便:
如果使用许多节点,则允许redis服务和Web服务之间的通信
允许任何工作节点上的Web服务的入站流量,以便可以从Web浏览器访问Hello World和Visualizer。
允许运行管理器的服务器上的入站SSH流量(这可能已在您的云提供商上设置)
这些是您需要为每个服务公开的端口:
Service | Type | Protocol | Port |
---|---|---|---|
web | HTTP | TCP | 80 |
visualizer | HTTP | TCP | 8080 |
redis | TCP | TCP | 6379 |
执行此操作的方法因您的云提供商而异。
我们使用Amazon Web Services(AWS)作为示例。
要使redis服务正常工作,您需要ssh进入运行管理器的云服务器,并在运行docker stack deploy之前在/home/docker/
中创建data/
目录。另一种选择是将docker-stack.yml
中的数据路径更改为管理服务器上的预先存在的路径。此示例不包括此步骤,因此示例输出中的redis服务未启动。
从这里开始,您可以使用在本教程的前几部分中学到所有知识。
通过更改docker-compose.yml文件来扩展应用程序,并使用docker stack deploy
命令即时重新部署。
通过编辑代码,然后重建并推送新镜像来更改应用程序行为。 (为此,请按照您之前用于构建应用程序并发布镜像的相同步骤)。
你可以用docker stack rm
移除堆栈。 例如:
docker stack rm getstartedlab
与您在本地Docker机器VM上运行swarm的情况不同,无论您是否关闭本地主机,您的swarm及其上部署的任何应用程序都将继续在云服务器上运行。
您已经对整个Docker平台进行了一次全栈的,开发-部署(devops)之旅。
除了本文还有很多关于Docker平台的东西,但是你应该已经对容器、镜像、服务、swarm、拓展、负载均衡、卷积、定位等有了基本认识。
想要更深入的学习?以下是我们推荐的一些资源:
全部评论