环境准备:阿里云Ubuntu18.04 全新安装
 
一、安装Docker
1、删除旧版本并更新包索引:
sudo apt-get remove docker docker-engine docker-ce docker.io
sudo apt update
2、apt可以通过Https使用存储库(repository):
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
3、添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、设置Stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5、再次更新apt包索引并安装最新的Docker CE版本:
sudo apt-get update
sudo apt-get install -y docker-ce
6、查看Docker是否安装成功并确认服务是否已经启动
docker version
systemctl status docker
//如果检查未启动执行一下
sudo systemctl start docker
Docker版本查看
 运行状态查看
7、经典Hello World
sudo docker run hello-world
二、部署Asp.NetCore到Docker
部署之前先理解下Docker基础知识(官方详细知识传送门https://docs.docker.com/engine/reference/run/)
a)docker外部运行架构图(图片来自于软谋教育黄埔架构班公开课)
     1、Doker  Client
     2、Doker  Host
     3、Doker Repository
 
 
docker安装目录: 
cd /var/lib
ls
docker 帮助命令
docker
进入正题准备发布Asp.NetCore项目,准备条件如下
1、创建.netCore项目
2、创建DockerFile
选择Linux
Dockerfile文件内容如下
编译或者发布时Dockerfile文件进行复制
3、编译项目并拷贝到Ubuntu系统服务器(我使用的工具:FinalShell 下载传送门 http://www.hostbuf.com/t/988.html
a)第一种方式-(上传压缩包-解压)
 准备工作目录:
//切换到工作目录
cd /home
//创建bill文件夹
mkdir bill
//浏览
ls
浏览新创建的文件夹
将项目打包并传送至工作目录
 命令模式下浏览复制进来的压缩包
安装解压工具
apt install p7zip-full
解压压缩包
7z x  BillAspNetCoreDocker.rar
解压后效果如下所示
上面第一种方式可能会出现异常各种原因现在介绍第二种操作方式直接复制(不需要解压)
b)直接复制项目文件夹
将Dockerfile移动至工作目录并查看配置
mv Dockerfile ../Dockerfile
vi Dockerfile
//退出
ESC+:wq
进入主题
因为项目上传到Linux之前未进行编译与发布而是直接将项目Copy到Ubuntu指定工作目录/home/bill/项目文件夹
所以正式发布到Docker之前需要编译与发布
三、项目编译、发布、部署
1、dotnetcore项目构建(编译)与发布
a)项目编译
cd BillAspNetCoreDocker/
dotnet build "BillAspNetCoreDocker.csproj" -c Release -o /app/build
发现找不到dotnet 命令未找到,这是因为没有安装DotNetCore Sdk提示的错误
安装DotNetSdk(因为我的项目是3.1所以安装dotnet-sdk-3.1版本)
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
dotnet --info
继续构建(编译)项目(-o 我理解为输出目录至/app/build下)
dotnet build "BillAspNetCoreDocker.csproj" -c Release -o /app/build
b)项目发布
dotnet publish "BillAspNetCoreDocker.csproj" -c Release -o /app/publish
c)通过Dockerfile构建Docker镜像
cd ..
docker build -t BillCore .
千万别漏掉了后面的【.】我理解为.是找到当前目录下的Dockerfile文件
出现下图错误提示,别着急慢慢看问题~指的是Docker命令必须为小写
换成下面命令继续执行,然后慢慢等待(估计第一次是这样非常慢)
docker build -t billcore .
 大概等了快半个小时~(阿里云还算比较快的,百度云与腾讯云差不多等了我1个多小时)
出现报错:原因分析~是因为Dockerfile没有与项目.csproj文件在同一目录下导致的(都是上面mv Dockerfile ../Dockerfile命令导致的问题怪我自己照着别人的过程依葫芦画瓢 )
原因分析完成了,解决问题
mv Dockerfile /home/bill/BillAspNetCoreDocker/Dockerfile
cd BillAspNetCoreDocker/
ls
如下图已将Dockerfile搬移至项目文件.csproj同级目录下
继续构建镜像
docker build -t billcore .
17个步骤相当顺利,看到胜利的曙光了
查看生成的镜像
docker images
查看镜像信息
docker image inspect billcore
d)运行镜像(-d 后台运行 -P暴露端口P为大写一定要注意)
docker run -d -P billcore
查看容器列表
docker ps -a

查看效果如下

从上图看到暴露的端口为【32769】现在再到外部打开浏览器浏览,出现以下截图空白内容.
查找下原因~应该是端口未开放导致的问题
e)开放端口
    1、防火墙开放端口
iptables -I INPUT -p tcp --dport  -j ACCEPT
iptables-save
   2、因为用的是阿里云(腾讯、华为、百度都一样)需要在云服务器管理里面添加安全组规则开放端口才能正常访问
 
四、大结局
最后见证奇迹的时刻,大功告成~(第一次实战花了大概4个多小时)
 
 

 
 

Ubuntu18.04安装Docker并部署(编译、发布、构建镜像)Asp.NetCore项目全过程笔记的更多相关文章

  1. Ubuntu18.04安装Docker, centos7安装Docker

    Ubuntu18.04安装Docker 第一种方法从Ubuntu的仓库直接下载安装: 安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装. $ sudo a ...

  2. Ubuntu18.04安装docker、docker-compose、

    Ubuntu18.04下Docker CE安装 Docker版本分为两个:Docker Community Edition (CE)和 Docker Enterprise Edition (EE).D ...

  3. Ubuntu-18.04安装Docker

    Docker 介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  4. ubuntu18.04安装docker

    本文基于unbuntu18.04版本来安装docker,步骤如下: 1:右击桌面->打开终端(E). 2::输入以下命令: sudo snap install docker ,输入密码之后出下图 ...

  5. 在Ubuntu18.04安装docker之后,以登陆用户身份执行docker pull jenkins,报错:connect: permission denied

    Using default tag: latest Got permission denied while trying to connect to the Docker daemon socket ...

  6. ubuntu18.04 安装docker

    https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1Change "stable" ...

  7. ubuntu18.04安装docker和开通对外2375端口(方便portainer管理)

    date: 2019-08-03   21:39:37 author: headsen chen apt-get install apt-transport-https ca-certificates ...

  8. ubuntu18.04 安装hadoop 2.7.3+hive 2.3.4

    1. 安装hadoop 详细请参见本人的另外一片博文<Hadoop 2.7.3 分布式集群安装> 2. 下载hive 2.3.4 解压文件到/opt/software -bin.tar.g ...

  9. Ubuntu 20.04安装Docker

    Docker学习系列文章 入门必备:十本你不容错过的Docker入门到精通书籍推荐 day1.全面的Docker快速入门教程 day2.CentOS 8.4安装Docker day3.Windows1 ...

随机推荐

  1. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象统称为资源,如:node.service.pod.project.deployment.u ...

  2. 位运算实现加减乘除四则运算(Java)

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 本文是继< ...

  3. JavaWeb网上图书商城完整项目--day02-24.分类模块的相关类创建

    所谓的分类模块:就是显示所有的分类的功能,显示所有的分类在left.jsp页面中 这就是显示所有的分类: 要实现上面的,我们首先创建一个分类模块,该模块需要实现下面的功能 我们先创建上面的java包 ...

  4. linux网络编程-posix条件变量(40)

    举一个列子来说明条件变量: 假设有两个线程同时访问全局变量n,初始化值是0, 一个线程进入临界区,进行互斥操作,线程当n大于0的时候才执行下面的操作,如果n不大于0,该线程就一直等待. 另外一个线程也 ...

  5. Python方法函数记录

    目录 python 控制台输出的内容保存到txt 文件 eval函数使用 python 控制台输出的内容保存到txt 文件 import sys class Logger(object): def _ ...

  6. 【vue】---- ElementUI 实现上传Excel

    1.功能描述:vue 项目使用 el-upload 实现上传 Excel. 2.功能效果:在el-upload基础上做了样式整改. 3.功能实现: // el-upload 上传组件 <temp ...

  7. 一.django初识

    1.创建django项目:[vagrant@CentOS7 vagrant]$ django-admin startproject devops [vagrant@CentOS7 vagrant]$ ...

  8. 飞越面试官(三)--JVM

    大家好!我是本公众号唯一官方指定没头屑的小便--怕屁林.   JVM,全称Java Virtual Machine,作为执行Java程序的容器,几乎代理了Java内存与服务器内存的交互,可以说是程序拥 ...

  9. CSS3动画 相比JS Animation 哪个更快?

    CSS vs. JS Animation: 哪个更快? 基于JavaScript的动画竟然已经默默地比CSS的transition动画快了?而且,Adobe和 Google竟然一直在发布可以媲美原生应 ...

  10. css3-pointer-events

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...