VMware Workstation Pro学习探索(Linux,Docker)
这是我在VMware Workstation Pro安装linux docker的一些操作步骤及一些问题记录。
1.在linux上直接运行.net core项目:
今天安装了nginx
部署.net core有前提条件的
需要ip 通过ip addr查看 如果没有的话需要设置下 设置好了需要重启网络服务 要确定服务是启动的状态
然后还需要安装.net core环境
需要配置防火墙的
最终才能访问
2.在linux中安装docker 容器化部署
解决用dockerfile生成镜像慢的问题
1、修改配置文件
vi /usr/lib/systemd/system/docker.service
2、配置文件添加--registry-mirror=https://navyf335.mirror.aliyuncs.com
简单步骤:
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.查看容器是否是否处于运行状态,若启动失败显示为exited,可查看日志
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)
3.使用Nginx反向代理Docker的Asp.Net Core项目的请求
4.如果你要删除的 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)
5.设置防火墙
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --permanent --zone=public --add-port=5000/tcp sudo firewall-cmd --reload
6.Linux中关闭SELinux的方法
1、临时关闭:输入命令setenforce 0,重启系统后还会开启。 2、永久关闭:输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
7.VMware装centos7开机黑屏死机问题
导致问题:
直接就是黑屏,连杠杠都没有
centos系统关不掉
关闭vmware提示:虚拟机XXX繁忙
解决方式
强制关闭vmware,重启计算机(不重启虚拟机重新开提示占用,网上删.lck方式试过没用)
编辑虚拟机设置
8.vim是vi的升级版本,如果vim不能使用,安装一下就好了。
命令是:yum -y install vim
9.ctrl+c强制中断
10.错误:net/http: TLS handshake timeout;解决方案
docker pull 错误 net/http: TLS handshake timeout 的解决方案
问题原因 :该命令默认从docker远端镜像仓库中拉取镜像,但由于远端仓库的服务器是在国外,我们国内有的用户很可能都访问不
解决:
使用国内镜像 daocloud镜像加速器 该方法需要配置加速器的镜像地址:register.mirror Linux中使用命令:curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d1d9aef0.m.daocloud.io 该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同 Windows中:在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:http://d1d9aef0.m.daocloud.io 加入到"registry-mirrors"的数组里。点击 Apply 。 MacOS中:右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:http://d1d9aef0.m.daocloud.io 点击 Apply & Restart 按钮使设置生效。
更多信息,可查看dacloud官网:https://www.daocloud.io/mirror#accelerator-doc
为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。
{ "registry-mirrors": ["https://registry.docker-cn.com"] } "https://nupozakm.mirror.aliyuncs.com"
11.docker 阿里云镜像加速器配置好之后会报错
job for docker.service failed because the control process exited with error code.See "systemctl status docker.service" and "journalctl -xe" fro details.
没有解决