在CentOS下搭建docker+.net core运行 从零开始全过程 完美亲身体验

3 篇文章 0 订阅
2 篇文章 0 订阅

对于开发.net  的同学来说,使用docker来跑程序,在没学会之前自以为很复杂,实际上学会了发现,敲几条命令就可以了,可能是.net对docker适配做得比较友好,比较容易上手,不用以为很难学。

有几个概念理清就简单了:

第一步创建 “镜像”:每次发版一次,就建一个新的镜像

第二步在镜像中创建一个“容器”,大概是一个虚拟机的意思,可以建很多个"容器”虚拟机,形成集群

第三步测试一下访问地址正不正常,就OK了

运行环境:

CentOS 7.0   

容器:Docker 1.13.1        

.Net Core版本: .NET Core 2.1/3.1都可以用

1.安装docker 

(1)安装docker  

 sudo yum install docker

(2)启动docker  

systemctl  start docker.service  

(3)配置开机启动  

systemctl enable docker.service

(4)查看docker版本信息  

docker version

2.部署程序

(1)准备你的.net core web程序

(2)确保你的项目能在windows上运行

(3)添加Dockerfile

填入如下内容 

复制代码

#基于 `microsoft/dotnet:2.1-aspnetcore-runtime` 来构建我们的镜像,这里镜像会自动下载对应的SDK  
FROM microsoft/dotnet:2.1-aspnetcore-runtime 
#.net core 3.1使用FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 
COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish

#设置Docker容器对外暴露80端口
EXPOSE 80


#使用`dotnet HelloWorld.dll`来运行应用程序
ENTRYPOINT ["dotnet", "HelloWorld.dll"]

复制代码

 并设置Dockerfile属性

增加了一个配置运行端口80

(4)发布

发布完成后可看到如下文件结构

(5)上传应用程序到linux 

这里使用了xftp工具上传到linux

(6)切换到Dockerfile所在目录

cd /home/vsftpd/admin/publish

(7)生成镜像

构建一个名字叫 helloworld的镜像,注意build命令后面的 . 不可去掉,这个 . 代表的是当前构建镜像的上下文路径

docker build -t helloworld .

看到Successfully就说明镜像构建成功了 

(8)查看生成的镜像

docker images

(9)运行docker容器

docker run --name helloworldtest -d -p 6002:80 helloworld

helloworldtest 容器的名称

helloworld 镜像名称

-d 后台进程

-p 是进行宿主和容器之间端口的映射(-p 宿主端口:容器端口) 

(10)检验docker容器是否运行成功

docker ps -a

(11)因为运行docker容器的时候进行了端口映射, 所以外部访问端口为6002

 http://你的服务器ip:6002

3.删除镜像步骤

需先停止容器,然后删除容器,最后才删除镜像

(1)查看容器ID及状态

 docker ps -a

(2)停止容器(90a31caf1297是容器ID) 

docker stop 90a31caf1297

(3)删除容器(90a31caf1297是容器ID)

docker rm 90a31caf1297

(4)查看镜像ID

 docker images

(5)删除镜像(bfed045a3f12是镜像ID)

 docker rmi bfed045a3f12

觉得有用 请同学们点个赞!

遇到问题

1、运行应用时提示 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found 

查看现有的版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

缺少

GLIBCXX_3.4.20

解决
查找系统内存在其它位置的包

find / -name "libstdc++.so.6*"


找一个本机高版本的包

例如找到一个 

libstdc++.so.6.0.26

复盖旧包

rm -f libstdc++.so.6

ln -s libstdc++.so.6.0.26 libstdc++.so.6   //一定要用指令覆盖,直接copy复盖不行的,试过

 2、遇到问题 /lib64/libc.so.6: version `GLIBC_2.18' not found 

进入某个目录,一行一行执行以下指令,即可解决

wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz 
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr
make -j2
make install

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值