Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
原文:Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台

转发请注明此文章作者与路径,请尊重原著,违者必究。

系列文章:https://www.cnblogs.com/alunchen/p/10121379.html

本篇文章操作系统信息

Linux:ubuntu 16.04.3 amd64

查看NetCore支持的Linux系统

NetCore不是支持Linux的所有系统,只支持部分,所以在Linux上安装NetCore之前要查看系统与版本是否支持NetCore。

查看NetCore2.0以上各个版本在Linux支持的系统及版本:

https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md

https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.md

https://github.com/dotnet/core/blob/master/release-notes/2.2/2.2-supported-os.md

安装Docker

安装docker,参考:https://segmentfault.com/a/1190000014066388

开始使用Docker在Linux上运行NetCore

回想一下我们平常做开发。流程都是使用Windows操作系统,并且使用宇宙最好IDE-VS,来创建项目、发布、运行。

这篇文章,主要讲述怎么在linux上运用docker来运行net core程序 。也会使用我们一般会使用到的流行方法去运行net nore,一般的步骤如下:

在Windows上创建项目->修改dockerfile文件->复制项目到Linux系统->运行dockerfile并创建镜像->在docker容器中运行镜像。

创建项目并且生成Dockerfile

现在,使用VS2017创建一个控制台项目,并添加Docker的支持,需要注意的是,添加Docker支持时需要选择Linux环境。具体怎么添加支持,请查看下面的截图。

右键项目->添加->容器业务流程协调程序支持->选择【Docker Compose】->选择【Linux】

图一:

图二:

图三:

创建完成后,可以看到项目的架构多了文件Dockerfile,与docker-compose。

主要看Dockerfile,它是描述了整个项目从编译到运行所依赖的环境,怎么去运行此程序。至于docker-compose目录,可以删除。其作用是在告诉VS所要运行docker的入口点,并且可以定义多个不同容器中的依赖关系来运行。这里不讲述docker-compose。

修改Dockerfile文件

修改下面的Dockerfile文件,修改了路径,把项目文件夹去掉了。因为运行Dockerfile的时候,是在Dockerfile所在的文件夹内运行。具体每行代表什么,后面会说明。

修改完成了Dockfile文件后,下一步就是要把代码放到Linux镜像中了。

在Linux使用Docker运行程序的方式

现在想到有3种方式运行在Linux上。第一种可以通过复制当前的项目源代码到Linux中编译并且运行。第二种是上传本地代码,然后在Linux使用git clone运行。第三种是在另外一台Linux成功构建镜像后,上传到线上仓储,最后在目标Linux下载镜像并在仓库中运行。

第一种与第二种类似,都是需要获取代码,只是获取代码方式不同而已。第三种是通过线上发布再拉取的做法。

下面我们主要讨论第一种。第二、三种在另外一篇文章使用使用到。

在Docker中运行Dockfile生成镜像

首先需要把代码copy到linux中。这里通过WinSCP工具复制项目文件到Linux系统中,例如Windows下有下面文件:

复制到Linux下,通过putty工具查看文件夹,已经复制成功了。

开始构造镜像image:运行命令【sudo docker build -t consoleappdockerlinux2-cmd . 】

命令中,【consoleappdockerlinux2-cmd】代码镜像名称,可以修改成自己所需要的名称。也可以为镜像添加tag,修改【consoleappdockerlinux2-cmd】成【consoleappdockerlinux2-cmd:1.0】为镜像打上1.0的tag标签。命令最后面的【.】号是必要的,是dockerfile在当前目录运行docker的意思。详细命令可查看:http://www.runoob.com/docker/docker-build-command.html。

需要说明的是【sudo】命令是用管理员身份运行,所以要输入密码。然后运行docker。

因为按照配置docker的时候使用了镜像加速,所以下载.net core镜像很快。如果是国外镜像,会timeout超时,所以建议都配上。

配置镜像加速器

关于镜像加速,可以按照阿里云的教程,登录账号:https://cr.console.aliyun.com/cn-shenzhen/mirrors。每个账号的加速地址应该不一样。下面内容截取阿里云的教程:

运行镜像并添加到容器中

使用【sudo docker images】查看是否存在我们的镜像 consoleappdockerlinux2-cmd

可以看到已经安装镜像成功了,我们现在开始运行我们的镜像吧:【sudo docker run 镜像id】

可以看到我们真的成功了!

关于容器的说明

众所周知,Docker有三大概念:镜像、容器、仓库。镜像是容器与仓库的桥梁,它们都需要用到镜像。上面我们把镜像添加到容器中运行,当使用【docker container ls】时,不会看到任何的容器,因为我们的控制台程序运行结束了。

所以如果要看到所有的容器,无论是运行中还是停止的,可使用命令【sudo docker ps -a】。

详细介绍Dockerfile各行代表的意思

演示更新版本

安装完成程序之后,一般都需要更新版本。这里再简单地演示一次。

在代码中更新了程序,控制台输出改成 “Hello World! 这是我第一次运行在Docker Linux中。 Version 2”。

为了演示更直观,首先将镜像 consoleappdockerlinux2-cmd打上tag,1.0版本。【sudo docker tag consoleappdockerlinux2-cmd consoleappdockerlinux2-cmd:1.0】

将程序代码复制到原本的路径上,然后运行命令构建Docker镜像【sudo docker build -t consoleappdockerlinux2-cmd:2.0 .】。这里指明构建2.0的tag。

成功后,运行【sudo docker images】可以查看到2.0版本的镜像了。

使用【docker run 镜像id】添加到容器中运行镜像,下面看到运行成功了,并且Version 2也打印出来了。

在上面,有没有发现问题。部署新代码运行镜像时需要指定镜像id,即使用【docker run 镜像id】的命令。而且每当重新编译新版本程序,都会重新生成一个镜像id,那么就矛盾了,每次都需要找到新版本的镜像id才会把镜像添加到容器中运行?

有什么解决办法?不指定镜像id是否可以?

所以docker run提供了运行 镜像名称+标签的命令:【sudo docker run consoleappdockerlinux2-cmd:latest】

所以你每次运行上面的命令,都是最新版本的代码。

系列文章

Docker在Linux/Windows上运行NetCore文章系列

可以关注本人的公众号,多年经验的原创文章共享给大家。

posted on 2019-01-04 00:07 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10217688.html

Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台相关推荐

  1. Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用

    Docker在Windows上运行NetCore系列(一)使用命令控制台运行.NetCore控制台应用 系列文章:https://www.cnblogs.com/alunchen/p/10121379 ...

  2. 用docker在linux上安装qq和微信

    用docker在linux上安装qq和微信 安装docker 查看docker镜像 重新启动docker服务 docker换源 查看docker当前运行状态 pull微信QQ镜像 创建脚本 qq单独脚 ...

  3. 一、netcore跨平台之 Linux上部署netcore和webapi

    文章目录 一.netcore跨平台之 Linux上部署netcore和webapi 第一步,你得先创建一个netcore的接口,这个我就简单创建一个接口 第二步,你得准备一个linux服务器,然后安装 ...

  4. oracle EBS查进程,UNIX/LINUX 上针对Oracle EBS 11i的运行的所有进程状态的查询方法:

    ..........[@more@]UNIX/LINUX 上针对Oracle EBS 11i的运行的所有进程状态的查询方法: 查看Oracle db进程 ps –ef|grep ora_ 查看Net8 ...

  5. Docker在Linux上下载与安装配置

    Docker在Linux上下载与安装配置 官方文档: Redirecting- 1.删除旧版本的docker,防止有残留 sudo yum remove docker \docker-client \ ...

  6. 在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优

    1 安装配置Oracle 9i数据库 本章描述内容如下所示: 1.1 安装前的准备工作 介绍在安装Oracle之前所需的准备工作. 1.2安装前的系统设置 介绍在安装Oracle之前所必须的系统设置. ...

  7. 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序

    说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...

  8. 【搭建NextCloud私有云盘服务】采用docker在linux上进行部署,内含nextCloud移植(迁移服务器)方法

    1.前言 完成的效果: 在linux上搭建NextCloud云盘服务,可以通过域名访问到云盘服务,并且安装有SSL证书,可进行https访问. 例如: 服务器公网ip为47.110.66.88 域名为 ...

  9. Debian8 Linux上安装SSH服务器并配置sshd_config文件启用root ssh登录

    Debian Linux上安装SSH服务器 安装SSH服务器debian Linux允许我们通过ssh协议登录debian服务器.SSH是从远程位置登录debian的首选方法,因为ssh协议通过Int ...

最新文章

  1. 不相交集类以及应用迷宫生成
  2. E.Text Editor (Gym 101466E + 二分 + kmp)
  3. 隐藏tomcat页面异常显示的版本信息
  4. 如何快捷配置java路径_eclipse常用快捷设置
  5. 算法图解学习笔记01:二分查找大O表示法
  6. python拼图游戏代码_GitHub 上哪些勾起回忆的经典小游戏(Python)
  7. 帆软报表(finereport)table块钻取,返回记住table块位置
  8. myeclipse每次保存编译全部_Fuchsia编译运行指南
  9. ROS-PCL读取pcd点云数据并在rviz中进行显示
  10. 编程必备基础知识-计算机组成原理-01概述篇-笔记
  11. 水域大小 Java_我的世界:Java版开发者们畅聊水域更新
  12. vue项目中 高德地图总是出不来的问题
  13. c语言对浮点数截断,C语言中浮点数精度进行截断输出
  14. docker mysql lost connection to mysql server at waiting for
  15. Mybatis的5种分页方式
  16. rpm mysql 忘记密码_centos7 yum安装mysql5.7并在root密码忘记的情况下重设密码
  17. JAVA看云判断天气_怎样看云判断天气变化?
  18. putty psftp 上传文件夹或上传文件到linux
  19. js面试题Foo.getName()的故事
  20. STM32通用Bootloader——FOTA

热门文章

  1. 两个单体内置对象_Global和Math
  2. 怎么书写高质量jQuery代码
  3. IplImage简介
  4. 基于用户投票的排名算法(六):贝叶斯平均
  5. FCTH(Fuzzy Color and Texture Histogram)算法
  6. Android中selector的使用
  7. [Flutter] Android沉侵式标题栏顶部叠加层去除
  8. 基于xampp搭建的个人博客。
  9. 数据导入HBase最常用的三种方式及实践分析
  10. SQL Server,Could not obtain exclusive lock on database 'model'