ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

将.netcore5.0(.net5)部署在Ubuntu的docker容器中

2021-01-19 10:01:21  阅读:1160  来源: 互联网

标签:mirrors netcore5.0 apt aliyun Ubuntu 镜像 net5 com docker


环境:
    宿主机:winows 10 家庭版
    虚拟机管理软件:Hyper-V
    虚拟机系统:Ubuntu 20.10
    Docker版本:Docker CE 20.10.2
    Core版本:5.0
本文不讲docker的基础知识,关于虚拟机配置和网络共享看这里

一、配置Ubuntu固定网络,和DNS。方便后面ssh连接, 配置完记得ping一ping

不想后面各种网络问题就先配置好这个!

  1. 使用ifconfig命令查看网卡
  2. 更改配置信息(注意这里DNS设置和网关设置)
sudo vi /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    ens33:     #配置的网卡的名称
      addresses: [192.168.137.35/24]    #之前分配的地址是137网段的,配置的静态ip地址和掩码
      dhcp4: no    #关闭DHCP,一般自动获取才yes
      optional: true
      gateway4: 192.168.137.1    #网关地址
      nameservers:
         addresses: [192.168.137.1,8.8.8.8]    #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开,共享内网 192.168.137.1 就行了
  version: 2
  renderer: networkd    #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd
  1. 使配置的ip地址生效
sudo netplan apply

二、Ubuntu 安装Docker 一把梭,反正我是成功了。

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
#最后测试是否安装成功
docker version

三、.net core 添加Docker支持

直接在项目目录下添加Dokerfile,这里没有用自带的doker支持

文件内容

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base #.net 5基础镜像,很明显没有了那个core
WORKDIR /app #设置工作目录
COPY . /app #这里是将当前目录下的文件拷贝到 镜像 /app 目录下面
##EXPOSE 8586 #暴露出去的端口,这里我们通过程序里面监听不使用这个配置

##使用国内镜像源
RUN echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib\n\
deb http://mirrors.aliyun.com/debian-security buster/updates main\n\
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib\n\
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib\n\
deb-src http://mirrors.aliyun.com/debian-security buster/updates main\n\
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib\n\
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib\n\
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" > /etc/apt/sources.list


# 用gdi+绘制的功能就需要安装这个包支持
RUN apt-get update && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
# 运行 CMD命令
ENTRYPOINT ["dotnet", "FtCap.Mvc.Web.dll"]

这里注意的三点:

  1. FROM 基础镜像在5.0后就去除了core 官方也有说明,对于开发这是3.1到5.0最大的改动,关于.net5 镜像源其他说明可以到 这里 去查看
  2. 不同系统的国内镜像源版本代号不同,这里使用的是阿里云的地址,更多 查看阿里云OPSX镜像站,而我这里是找的最新的debian源,因为系统比较新..安装其他的需要添加密钥的认证,没有镜像的情况下 就很慢了
  3. apt-get install -y libgdiplus 目的是安装gdi+的支持,windows系统自带,但是到linux下面需要手动安装,不然无法使用图形绘制等功能,比如图形验证码

四、发布并部署.net5

  1. OK,文件创建好了,直接发布项目到文件夹.注意看dockerfile 一定要发布出来

  2. 然后通过 scp或其他软件上传到Ubuntu虚拟机。我这里仅仅只用了scp来上传,cd到publish上级目录运行以下命令

scp -r publish Ubuntu用户名@UbuntuIP:/home #我这里连文件夹一起拷贝到了home下面,注意设置publish的读写权限 由于是本地我直接 chmod 777.
  1. 到这里文件已经拷贝到ubuntu上了,然后 制作镜像->启动容器一把梭,反正我是成功了....
cd /home/publish #进入刚才发布的目录里面

创建镜像

docker build -t dockerdemo001 . #(注意最为英文句号,表示在当前目录下搜索Dockerfile文件),如果没有报错基本就创建成功了
docker images #检查一下看看名称是否对如果是 none就解决问题删了重来 ,删除 docker rmi <ID>

参数分解:

  1. -t ---指定镜像名称 小写
  2. 命令结尾处 . ---表示build上下文为当前目录,默认情况下docker会使用在上下文的根目录下找到Dockerfile文件

启动容器

docker run --name dockerdemowww -p 8586:8585 -d dockerdemo001 #如果没有报错基本上没啥问题

参数分解:

  1. -d ,表示在后台以守护态(daemonized)形式运行容器

  2. -p 外部端口与内部容器端口映射。外部端口:内部端口

  3. --name 指定容器的名称。当然可以不指定,默认会为我们创建

  4. 最后一个参数 dockerdemo001 就是我们刚创建的镜像名称

  5. 查看并运行发布的程序

docker ps #查看正在运行的docker容器,如果有说明已经启动成功,没有看看 docker ps -a ,是否存在,存在尝试 docker start <容器名称> 启动
#测试请求网站,如果成功就完成了docker上的部署
curl -i "http://127.0.0.1:8586"
#外网访问开放防火墙端口
ufw allow 8586

局域网访问,成功!

到这里就完成了.net5 在docker上部署了

五、其他注意事项

1.我这里每次重启电脑,都需要重新在 网络连接 进行 上文中共享网络的操作。也就是先关闭共享再重新共享,不然ubuntu无法正常联网。如果在已经启动的ubuntu下,还需要重启docker0网桥,不然容器内部无法联网
2.关于容器内部的持久化和维护可以使用 docker 中的 Volume来实现。这样就不用每次进入容器去查看或修改一些操作了

标签:mirrors,netcore5.0,apt,aliyun,Ubuntu,镜像,net5,com,docker
来源: https://www.cnblogs.com/daxiongblog/p/14293833.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有