Docker+.Net Core 的那些事儿-2.创建Docker镜像
1.从store.docker.com获取.net core镜像
docker pull microsoft/dotnet
2.创建一个.net core项目,并发布
在上篇文章结尾建立的工作目录下,执行
[root@localhost docker_demo]# dotnet new mvc -o hwapp //创建一个asp.net core mvc程序
[root@localhost docker_demo]# cd hwapp
[root@localhost hwapp]# dotnet restore //还原nuget包
执行
[root@localhost hwapp]# vim Program.cs
修改Program.cs代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
namespace hwapp
{
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls("http://*:5000") //注意此处,需要添加端口绑定
.UseStartup<Startup>()
.Build();
host.Run();
}
}
}
保存后执行
[root@localhost hwapp]# dotnet publish //发布程序
运行完毕后,会在bin/Debug/netcoreapp1.1/目录下生成publish文件夹。
3.创建Dockerfile并建立镜像
在publish文件夹下,执行
[root@localhost publish]# touch Dockerfile
[root@localhost publish]# chmod 777 Dockerfile
[root@localhost publish]# vim Dockerfile
向Dockerfile中写入以下内容:
#基于 `microsoft/dotnet` 来构建我们的镜像
FROM microsoft/dotnet #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
COPY . /publish #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish #设置Docker容器对外暴露5000端口
EXPOSE 5000 #使用`dotnet hwapp.dll`来运行应用程序 CMD ["dotnet", "hwapp.dll", "--server.urls", "http://*:5000"]
:wq保存。之后按照Dockerfile来建立镜像:
docker build -t hwapp . //注意后面那个点,代表全部
执行
docker images
可以看到一个基于dotnet的属于自己的镜像。
下篇文章会介绍如何创建容器并运行app。
QA:常见问题及解决办法
1.docker pull 时报网络问题错误或者下载速度过慢,例如:
A:使用国内docker加速器,比如阿里云或DaoCloud,下面以DaoCloud为例:
注册一个账号,之后进入控制台,点加速器:
进入之后会得到一个命令,但是千万不要放到centos中执行!!!命令如下
但是后面的url是有用的,执行以下命令
[root@localhost publish]# cd /etc/sysconfig
[root@localhost sysconfig]# vim docker
在OPTIONS中添加参数:
--registry-mirror=http://xxxxxxxx.m.daocloud.io
其中url为加速器中提供的url。
重启docker服务,重新执行docker pull即可。
PS:如果执行了DaoCloud提供的命令,则可能会报:
这个错误,这个时候通过安装docker-engine即可解决(本人没亲自试过...)
还有如果在OPTIONS中的参数写错了,也是会报这个错误的。
2.执行docker命令时报以下错误:
A:重启docker服务即可。
service docker restart
Docker+.Net Core 的那些事儿-3.创建容器并运行
Docker+.Net Core 的那些事儿-2.创建Docker镜像的更多相关文章
- Docker+.Net Core 的那些事儿-3.创建容器并运行
1.根据镜像运行容器 上篇文章建立了一个镜像: 我们以此开始,执行以下命令: docker run -d -p 5000:5000 hwapp:latest 如果返回以上结果表示建立成功. 此时如果你 ...
- Docker+.Net Core 的那些事儿-1.准备工作
1.下载centos 地址:https://www.centos.org/download/ 我使用的是DVD ISO,这么做的目的是为了在之后的docker填坑的路上,方便使用centos中Fire ...
- Docker+.Net Core 的那些事儿-4.还有这种操作!?
1.通过docker run -v命令映射工作目录 通过一系列上述操作,我们可以发现我们的发布是基于镜像的,也就是说,在后期的迭代过程中,如果有些代码修改,我们就不得不删除旧的容器和镜像,dotnet ...
- Docker 学习笔记 (一)Dockerfile 创建本地镜像
一.测试环境 OS version: CentOS Linux release 7.5.1804 (Core) docker cluster : master 1 + data node 4 dock ...
- docker创建nginx镜像
注意:此处不是用的dockerfile创建的镜像,只是用来搞一搞 首先你的系统里面要安装docker,这里就不重复介绍了,可以看之前的文章: 然后再搞一个基础镜像 docker pull regist ...
- 标记,上传并下载自己创建的镜像 image
1. 首先使用 docker images 查看已有镜像: 2. 获得 docker-whale 的 IMAGE ID,然后为 docker-whale 镜像 image 打上标签 Tag.使用命令: ...
- Docker源码分析(六):Docker Daemon网络
1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...
- .Net Core(完) 创建Docker镜像
使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器 ...
- .Net Core创建Docker镜像
1..Net Core项目[Lails.Server.Demo]发布到目录下Lails.Server.Demo\bin\Release\netcoreapp2.1\publish 2.上面目录下新建文 ...
随机推荐
- matlab判断图像是彩色图还是灰度图
matlab怎样看图像是彩色还是灰度_莹莹_新浪博客 http://blog.sina.com.cn/s/blog_76088a1f0101diq0.html 解决一: isrgb(A) 如果A是RG ...
- Spring_day04--课程安排_回顾SSH框架知识点_SSH框架整合思想
Spring_day04 上节内容回顾 今天内容介绍 回顾SSH框架知识点 Hibernate框架 Struts2框架 Spring框架 SSH框架整合思想 整合struts2和spring框架 Sp ...
- Hadoop1.2.1 伪分布式安装
Hadoop1.2.1 单机模式安装 Hadoop组件依赖图(从下往上看) 安装步骤: 详细步骤: 设置ssh自动登录(如下图): 1.输入命令 [ssh-keygen -t rsa],然后一直按回车 ...
- Gradle 模板配置
对于新手配置Gradle是一件很痛苦的事,记住二句话绝对搞定 1.在Gradle-->gradle-wrapper.properties中配置distributionUrl=https\://s ...
- 学习LINQ必备条件
转自:http://www.cnblogs.com/VolcanoCloud/p/4451302.html 学习LINQ必备条件:隐式类型局部变量:对象集合初始化器:委托:匿名函数:lambda表达式 ...
- kibana5.6源码分析2
1.启动shell脚本:/bin/kibana; js脚本:/src/cli/cli.js; 2.服务端入口:/src/server/kbn_server.js.使用的web框架为hapi.js. ...
- 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- null array mysqli_fetch_assoc ( mysqli_result $result ) void mysqli_free_result ( mysqli_result $result )
w取最大db_id. if($row=null){ var_dump(123); } var_dump($row); if($rowb=array('ww','w123')){ var_dump(23 ...
- python基础-第十篇-10.1HTML基础
htyper text markup language 即超文本标记语言 超文本:就是指页面内可以包含图片.链接,甚至音乐,程序等非文字元素 标记语言:标记(标签)构成的语言 网页==HTML文档,由 ...
- MapReduce自定义InputFormat和OutputFormat
一.自定义InputFormat 需求:将多个小文件合并为SequenceFile(存储了多个小文件) 存储格式:文件路径+文件的内容 c:/a.txt I love Beijing c:/b.txt ...