小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动——用docker容器运行程序。首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 applications in Linux Containers with Docker 小试了一下。
首先连上阿里云容器服务的群集,然后用 docker pull 命令从 hub.docker.com 上下载 ASP.NET 5的docker镜像(我们选用基于coreclr的ASP.NET 5):
docker pull microsoft/aspnet:1.0.0-rc1-update1-coreclr
问题
基于阿里云容器服务,下载docker镜像时没有下载进度指示,如果下载速度慢,干等的感觉让人难受(这是docker smarm的问题,详见Docker client via Swarm hangs for the first pull)。
c6bca914b855b44f2af39ca74ce4a6b7c-node1: Pulling microsoft/aspnet:1.0.0-rc1-update1-coreclr...
c6bca914b855b44f2af39ca74ce4a6b7c-node2: Pulling microsoft/aspnet:1.0.0-rc1-update1-coreclr...
如果不用阿里云容器服务,基于自己运行的docker daemon,就会有下载进度指示。
9ee13ca3b908: Downloading 524.4 kB/51.35 MB
23cb15b0fcec: Download complete
ec73306ee200: Download complete
d376f9e966df: Download complete
7a4b50ae736b: Download complete
a3e8edf3e8fc: Downloading 1.08 MB/67.12 MB
e07cc3a60cb9: Download complete
52159185b7a9: Downloading 786.4 kB/18.2 MB
38903d7083ef: Downloading 401 kB/713.3 kB
4b6ac5688c98: Download complete
继续
下载好ASP.NET 5镜像之后,接着就用这个镜像运行容器。
docker run -it microsoft/aspnet:1.0.0-rc1-update1-coreclr
如果出现下面的命令提示符,说明容器已经成功启动了。
root@4bc82a74681c:/#
然后运行dnvm命令验证一下:
root@4bc82a74681c:/# dnvm list
Active Version Runtime Architecture OperatingSystem Alias
------ ------- ------- ------------ --------------- -----
1.0.0-rc1-update1 coreclr x64 linux default
接下来,我们要基于这个容器创建包含ASP.NET 5示例程序的容器。
先用exit命令退出容器,接着从github下载ASP.NET 5示例程序。
git clone git@github.com:aspnet/Home.git
cd samples/1.0.0-rc1-update1/HelloWeb/
然后修改一下当前文件夹中的Dockerfile文件,将 1.0.0-rc1-update1 改为 1.0.0-rc1-update1-coreclr:
FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]
EXPOSE 5004
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
紧接着我们基于这个Dockerfile用docker build命令生成一个新的容器镜像:
docker build -t aspnet5-hello-web /git/Home/samples/1.0.0-rc1-update1/HelloWeb
生成过程中的输出如下:
Sending build context to Docker daemon 321 kB
Step 1 : FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr
---> 4b6ac5688c98
Step 2 : COPY . /app
---> 5eb606a7926f
Removing intermediate container c8f1d23fc130
Step 3 : WORKDIR /app
---> Running in 0b2a32a9a251
---> b5f1d718f699
Removing intermediate container 0b2a32a9a251
Step 4 : RUN dnu restore
---> Running in 7d1f6154e72b
Microsoft .NET Development Utility CoreClr-x64-1.0.0-rc1-16231
....
Restore complete, 83316ms elapsed
...
Installed:
120 package(s) to /root/.dnx/packages
---> d469c112c0a0
Removing intermediate container 7d1f6154e72b
Step 5 : EXPOSE 5004
---> Running in 6b5760820818
---> 7aa563e208ee
Removing intermediate container 6b5760820818
Step 6 : ENTRYPOINT dnx -p project.json web
---> Running in a513a06fd393
---> 4cb553854bff
Removing intermediate container a513a06fd393
Successfully built 4cb553854bff
docker build成功之后,通过docker images可以看到我们创建的aspnet5-hello-web镜像。紧接着我们用这个新的镜像运行容器:
docker run -t -d -p 8080:5004 --name aspnet5-hello-web aspnet5-hello-web
成功运行之后,我们进入阿里云容器服务控制台看一下(访问路径:集群->点击集群名称->点击节点IP->容器列表),在容器列表中就会看到我们刚刚运行的容器:
最后,通过浏览器访问http://节点IP:8080
,就能访问托管于阿里云容器服务运行于docker容器中的ASP.NET 5示例站点:
搞定!
基于阿里云容器服务用docker容器运行ASP.NET 5示例程序的更多相关文章
-
阿里云Kubernetes服务上使用Tekton完成应用发布初体验
Tekton 是一个功能强大且灵活的 Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统.通过抽象底层实现细节,用户可以跨多云平台和本地系统进行构建.测试和部署. 本文是基于 ...
-
阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器
一.前言 Git是目前优秀和流行的源代码管理工具.而GitHub是一个面向开源及私有软件项目的托管云平台,但开源免费,私有收费.而公司出于商业化等目的需要搭建自己的源代码托管服务器.通过网上了解Gog ...
-
基于阿里云安装脚本扩展 之 自动安装mongodb及php扩展
好久没有发布文章了,有点跟不上当初这个博客的初衷.为了使自己的博客更新不半途而废,今天特意再写了一个自动安装脚本,一样是基于阿里云的服务端安装脚本进行的扩展.闲话不说,直接放代码: #!/bin/ba ...
-
微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
-
ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志
按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力.现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出.日志文件同步到阿里云日志服务(SLS)进行 ...
-
阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...
-
如何给容器服务的Docker增加数据盘
如何给容器服务的Docker增加数据盘 摘要: 我们知道Docker的数据是通过联合文件系统的方式存储到磁盘上,当需要在机器上运行的容器或者镜像的数量不断增加时,有可能磁盘的大小不再满足需求,这个时候 ...
-
构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
-
go程序基于阿里云CodePipeline的一次devops实践
背景 最近朋友有个项目代码托管用的码云,测试服务器(阿里云ECS)只有一台,三四个人开发,于是想基于阿里云的CodePipeline快速打造一套自动化cicd的流程,使用docker来进行多套环境部署 ...
随机推荐
-
Eclipse 增加php插件
Eclipse 下载解压后运行, Help ------> Install New Software,在 Work whit 输入http://download.eclipse.org/tool ...
-
CDH5X 安装oozie报错To enable Oozie web console install the Ext JS library.
最近在CDH5.X 安装oozie 服务,服务安装完毕,访问oozie server ui,报如下错误: 页面提示: Oozie web console is disabled.To enable O ...
-
Geometry shader总结
什么是Geometry Shader GS存在于vertext shader和固定功能vertex post-processing stage之间,它是可选的不是必要的.GS的输入是单个primiti ...
-
PHP缓存机制Output Control详解
开启OB缓存的方式有如下两种: 1. php.ini中开启 output_buffering = 4096 启用了此指令,那么每个PHP脚本都相当于一开始就调用了ob_start()函数,PHP5.5 ...
-
svn管理代码在cornerstone上无法添加.a 静态库文件
有时候.a静态库不能上传到svn的服务器 导致别人拉代码运行不了 这是因为cornerstone设置里面默认不会提交.a文件, 在上图选项栏里是cornerstone默认忽略上传的文件名后缀,在这里 ...
-
从spring容器中取出注入的bean
从spring容器中取出注入的bean 工具类,代码如下: package com.hyzn.fw.util; import org.springframework.beans.BeansExcept ...
-
What’s the difference between a stack and a heap?
http://www.programmerinterview.com/index.php/data-structures/difference-between-stack-and-heap/ The ...
-
tornado 11 异步编程
tornado 11 异步编程 一.同步与异步 同步 #含义:指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系 #现象:有一个共同的时钟,按来的顺序一个一个处理 #直观感受:需要等待,效率 ...
-
45. 腾讯面试题: 使用hashmap 插入数据,怎么样依照插入数据的顺序输出数据
题目:使用hashmap 插入数据,怎么样依照插入数据的顺序输出数据 分析: 使用hashmap插入数据,数据的顺序会改变.能够写个小程序试试. 那怎么样依照插入的顺序输出呢? 方法一: 这是我第一时 ...
-
PTA 7-10(图) 旅游规划 最短路问题
7-10(图) 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果 ...