记录.Net部署Docker-v指令使用

Posted ZYPLJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录.Net部署Docker-v指令使用相关的知识,希望对你有一定的参考价值。

记录Docker的-v指令使用

前言

之前我浅学了一下docker,方便部署.net项目(部署的是打包之后的项目)

dockerfile文件如下:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5031
EXPOSE 7031

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src

COPY . .

ENTRYPOINT ["dotnet", "Personalblog.dll"]

然后下载镜像,创建容器,都是使用的如下命令:

docker build -t app .

docker run -d -p 80:80 --name app app

问题出现

如果只是简单的使用上面的命令,是可以正确的部署项目,但是会出现一个问题,就是我项目如果更新了的话。我需要先删除容器,还要删除镜像才能重新部署。如果我只是单纯的删除容器重新部署的话,项目是不会更新的。

为什么会出现这个原因呢?

就是因为我没有挂载目录,docker默认挂载了一个随机名的目录,如果我不删除镜像,无论我创建多少个容器,项目还是不会变。

问题解决

如何解决这个问题,很简单,只需要使用-v指令就行了

如下:

docker run -d -p 80:80 -v 项目路径:/src --name app app

这样子部署容器之后,镜像中就会将挂载路径指向你的项目路径,这样子每次项目更新只需要删除容器,然后重新创建容器即可。

注意:这是.net项目,挂载路径为/src,其他的项目还没了解,我试着改过这个挂载路径,但是不太行,创建容器的时候,容器中会自动给你创建一个src目录,如果有解决办法可以评论该篇文章,迫切希望各位大佬解答我的疑惑。

扩展

可以使用docker inspect 镜像名查看挂载路径,找到Mounts查看挂载信息。

Docker:部署软件

Docker的镜像文件可以在镜像仓库中进行搜索。

常用命令

docker的常用命令如下:

  • docker -v , --version : 输出当前docker的版本信息。
  • docker images : 查看镜像,-a 表示查看所有 ,-q 只显示镜像ID。
  • docker ps : 查看所有运行中的容器列表,-a 表示查看所有(包括已退出的容器),-q 只显示ID,-s显示文件大小。
  • docker pull : 从镜像仓库下载镜像,默认的镜像仓库地址:(https://hub.docker.com),可以直接下载镜像仓库中有的镜像文件,默认下载latest版本,也使用:tag指定下载哪个版本。
  • docker rm: 删除容器,后面带指定容器的ID,即可删除对应的容器。
  • docker rmi: 删除奖项文件,后面可以是镜像文件的名称或则ID,都可删除镜像文件。
  • docker run: 启动镜像并创建一个新容器实例,-a 可以添加STDIN、STDOUT或STDERR,-d 表示容器在后台执行(比较常用),-e 可以设置环境变量,-m 可以设置内存大小, -p 可以将系统端口指向容器端口,使其可以在容器外进行访问,(例如 -p 80:8080 可以将系统的80端口与容器的8080端口绑定。则容器外可以对80端口访问到容器的8080端口,比较常用)
  • docker stop: 停止容器的运行。
  • docker logs: 显示容器的日志信息,-f 跟踪容器实施日志信息,-t 显示日志的时间信息。 
  • docker search: 在Docker Hub 中搜索镜像文件。

部署 Tomcat

下载Tomcat镜像文件,如下命令会下载latest版本的tomcat。

[[email protected]alhost ~]# docker pull tomcat

下载完成后可以使用 docker images 查看下载后的镜像文件信息。

[[email protected] ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat        latest              df50c9d355cf        6 days ago          463 MB

启动tomcat程序,如下命令会在后台执行tomcat。并将tomcat默认的8080端口指向系统的8080端口。

[[email protected] ~]# docker run -d -p 8080:8080 tomcat

如果想打开多个Tomcat则直接,如上一样的名并将8080端口改为8081则,两个tomcat互不干扰,可同时存在。

docker run -d -p 8081:8080 tomcat

使用docker ps 查看正在运行的程序

[[email protected] ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
9d64f362c40a        tomcat              "catalina.sh run"   8 seconds ago       Up 7 seconds        0.0.0.0:8081->8080/tcp   gracious_bohr
39d01b39e8d3        tomcat              "catalina.sh run"   4 minutes ago       Up 4 minutes        0.0.0.0:8080->8080/tcp   wizardly_davinci

其中有两个Tomcat程序。如下访问结果:

技术分享图片         技术分享图片

 

部署 Mysql

以上是关于记录.Net部署Docker-v指令使用的主要内容,如果未能解决你的问题,请参考以下文章

docker的安装

.NET 5 部署在docker上运行

在Ubuntu下部署kubernetes集群

问题记录- .Net 生成压缩文件问题

部署tms过程记录

Docker的使用初探:常用指令说明