环境准备:阿里云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. c语言"##"的使用

    #include<stdio.h> #define Operations(x) operation_ ## x // ## 是黏贴字符串 int Operations(sum)(int x ...

  2. Java基础-Java中transient有什么用-序列化有那几种方式

    此文转载于知乎的一篇文章,看着写的非常全面,分享给大家. 先解释下什么是序列化 我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术. Java序列化 ...

  3. JVM生命周期与运行过程

    1. Java虚拟机的生命周期 Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序.程序开始执行时他才运行,程序结束时他就停止.你在同一台机器上运行三个程序,就会 ...

  4. 手把手教你使用Python抓取QQ音乐数据(第一弹)

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  5. java异常处理之try_catch_finally

    java异常处理之try_catch_finally 看下面的一个列子: public class TestException { int goabl=1; public TestException( ...

  6. Django REST Framework(一) Serializer和ModelSerializer

    REST Framework概述 Django REST framework是一套基于Django的REST框架,是一个用于构建Web API的功能强大且灵活的工具包. 1.RESTful 简述Rep ...

  7. 上位机面试必备——TCP通信灵魂二十问【下】

    上篇文章跟大家介绍了TCP通信常见的前10个面试题,没看过的小伙伴可以点击下方链接进行查看: 上位机面试必备——TCP通信灵魂二十问[上] 今天就后面的10个面试题接着做下说明:欢迎关注[dotNet ...

  8. PHP字符串函数总结

    字符串函数 addcslashes — 为字符串里面的部分字符添加反斜线转义字符 addslashes — 用指定的方式对字符串里面的字符进行转义 bin2hex — 将二进制数据转换成十六进制表示 ...

  9. 前端基础:HTTP 协议详解

    参考:https://kb.cnblogs.com/page/130970/#httpmeessagestructe HTTP协议是无状态的 http协议是无状态的,同一个客户端的这次请求和上次请求是 ...

  10. 三.cmdb

    一.服务器管理: https://github.com/rfjer/autoAdmin/tree/master/apps/servers 一服务器信息收集方式: 1.物理服务器 跑脚本传(bash/a ...