Linux及Docker学习记录

以下是我理由虚拟机操作linux及docker的一些问题记录

一.linux部署.net core

1.IP问题,linux下通过ip addr 查看,如果没有的话需要设置,具体步骤 见之前的博客《VMware Workstation CentOS7 Linux 学习之路(1)--系统安装》 设置好了需要重启网络服务  要确保服务的启动状态

2.需要安装.net core环境

3.需要配置防火墙

 

 

 

二.在linux下安装docker 容器化部署

1.构建Dockerfile文件(没有后缀)

#基于'mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim' 来构建镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#拷贝项目文件夹中的所有文件到docker容器中的app文件夹 这里是两个参数
COPY . /app 
#设置工作目录为 '/app' 文件夹,即容器启动默认的文件夹
WORKDIR /app 
#设置Docker容器对外暴露80端口
EXPOSE 80
#使用'dotnet Core. Web.dll'来运行应用程序
CMD ["dotnet", "WebApplication1.dll"] 

2.上传项目到linux 可以自己创建文件夹

3.使用命令将项目构建为镜像

 docker build -t testcore .     //-t 指定镜像名 . 表示Dockerfile所在目录 .标识本文件夹 我用的/data/mywebappFiles
注意 dockerfile中基于microsoft/aspnetcore或microsoft/dotnet来构建镜像(dotnet>aspnetcore)需要以服务器上安装的镜像版本做区分
    服务器版本与项目版本一定要一致  否则容器运行会报错,如下:
It was not possible to find any compatible framework version.
The specified framework 'microsoft.aspnetcore.app',version '3.1.0' was not found.
-Check application dependencies and target a framework version installed at:
 /usr/share/dotnet/
-Installing .net core prerequisites might help resolve this problem:
   https://gp.microsoft.com/fwlink/?LinkID=798306&lcid=0x409
-The .net core framework and sdk can be installed from:
   https://aka.ms/dotnet-download
-The following version are installed:
   2.1.17 at [/usr/share/dotnet/shared/Microsoft.aspnetcore.app]



此处我的项目是.net core3.1 与最新的差一点 docker pull microsoft/dotnet 都是最新的  版本有点差异  所以我用如下版本

docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

构建成功之后可以用docker images查看镜像

 

4.将镜像发布为容器

docker run --name testapp -d -p 8000:80 -v /app testcore 
--name指定容器名称 
-d 指定容器后台运行 
-p 指定外部8000端口映射到容器80端口 
-v 绑定数据卷/app (本地目录:容器内目录)本地目录必须为绝对路径 
testcore镜像名

5.查看容器是否处于运行状态,若失败,可以查看日志

docker ps -a //查看所有容器的运行状态 
docker exec -it testapp bash //若容器正在运行,进入容器内部 
docker logs testapp//若容器未运行,查看报错日志

6.请求网站查看网站是否运行成功

curl 0.0.0.0:8000 
curl -s -D - localhost:8000 -o /dev/null //查看请求返回信息

最后查看防火墙端口开放情况,以及阿里云后台安全组端口开放情况(如果你是用的阿里云服务),再通过外网访问瞅瞅

7.更新代码 

由于在创建容器的时候映射了数据卷,则当有静态文件更新的时候,会自动更新到容器内。
但是当有dll文件更新时,需要手动重启一下容器
docker restart testapp

以上,实现了将一个Asp.Net Core MVC项目发布到docker中的全过程。目前容器中只有一个dotnet镜像,通过地址访问网站实际上直接访问的Kestrel服务器。

 

Kestrel服务器只是一个轻量级的web服务器,并且不支持基于主机名的绑定(如果1台服务器部署了多个 ASP.NET Core 站点,每个站点需要使用不同的端口)
出于安全性考虑(包括但不限于适当的超时,大小的限制,以及并发连接限制等问题)需要在Kestrel和Internet之间加入一个反向代理服务器(IIS,Nginx或者Apache)

8.问题

(1)

 

 

(2)解决用dockerfile生成镜像慢的问题
1、修改配置文件
vi /usr/lib/systemd/system/docker.service
2、配置文件添加--registry-mirror=https://navyf335.mirror.aliyuncs.com

 

 

(3)删除容器

如果你要删除的 container 还是运行状态,那么就要先把容器停止了:

docker container stop <container ID>

找到需要删除的容器对应的  container ID 或者名字,进行删除:

docker container rm  <container ID>
批量停止容器:
docker container stop $(docker container ls -a -q)

批量删除容器:
docker container rm $(docker container ls -a -q)

(4)设置防火墙

sudo firewall-cmd --permanent --zone=public --add-service=http 
s
sudo firewall-cmd --permanent --zone=public --add-service=https
s
sudo firewall-cmd --permanent --zone=public --add-port=5000/tcp 
s
sudo firewall-cmd --reload

(5)linux中关闭selinux的方法

1、临时关闭:输入命令setenforce 0,重启系统后还会开启。
2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。

 

 

 

 

(6)vmware安装centos7开机黑屏死机的问题

 

 

导致问题:

1.直接就是黑屏,连杠杠都没有
2.centos系统关不掉
3.关闭vmware提示:虚拟机XXX繁忙

解决方式:

1.强制关闭vmware,重启计算机(不重启虚拟机重新开提示占用,网上删.lck方式试过没用)
2.编辑虚拟机设置

 

 

 

 

 

 

 

(7)docker 阿里云镜像加速器配置好之后会报错

job for docker.service failed because the control process exited with error code.See "systemctl status docker.service" and "journalctl -xe" fro details.

没有解决

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-04-29 16:10  阳光下的行者  阅读(369)  评论(0)    收藏  举报