记录.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指令使用的主要内容,如果未能解决你的问题,请参考以下文章