VMware Workstation Pro学习探索(Linux,Docker)

Posted 阳光下的行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.

没有解决

 

 

 

 

 

 

 

 

 

以上是关于VMware Workstation Pro学习探索(Linux,Docker)的主要内容,如果未能解决你的问题,请参考以下文章

VMware Workstation 14 Pro安装教程(详细)

VMware Workstation 12 Pro虚拟机下载(含序列号)

VMware Workstation Pro 15 64位下载与安装

VMware Workstation Pro 16 官方正式版下载(含密钥)

VMware Workstation Pro 15 许可证密钥

VMWare workstation Pro 14 For Linux key