DockerFile
1、DockerFile如何编写
https://www.cnblogs.com/xmzhang/articles/15693702.html
Docker镜像和容器之间的关系
https://www.cnblogs.com/everest33Tong/p/14578031.html#top
容器卷是什么?
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
1、一句话:有点类似我们Redis里面的rdb和aof文件
2、将docker容器内的数据保存进宿主机的磁盘中
3、运行一个带有容器卷存储功能的容器实例
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
dockfile中卷的作用
数据卷的作用:
主要是为了实现数据的持久化,即数据不随着Container(容器)的结束而消失。,所以将目录从宿主机挂载到容器中,实现数据的同步和备份。在容器里边的改动,我们可以在宿主机里感知,而在宿主机里面的改动,在容器里边可以感知到。
其实一般的dockfile如果不是数据库类的这种需要持久化数据到磁盘上的应用,都是无需指定volume的。指定volume只是为了避免用户忘记指定-v时导致的数据全部在容器中,这样的话容器一旦被删除所有的数据都丢失了。
为什么要在Docker Run 中指定卷的位置?
如果在dockerfile中指定了主机目录,这样dockerfile就不具备了可移植性了,毕竟每个人所需要映射的目录可能是不同的,那么最好的办法就是把这个权利交给每个运行这个dockerfile的人,所以才会有 run -v 主机目录:容器目录 这样的指令。
查看挂在到宿主机的目录
docker inspect [容器Id]
介绍:https://blog.csdn.net/weixin_42620326/article/details/125324192
DockerFile的基础制作
FROM mcr.microsoft.com/dotnet/aspnet:6.0 #From【指令指定了基础镜像】 必须有一个基础镜像
COPY ./ /app #【通过COPY将程序集导入到基础镜像中 --> 相当于在基础镜像中添加文件】 ./ 将当前dockerfile 所在的根目录所有的文件 复制到 基础镜像容器中的app目录 [目录会自动创建]
WORKDIR /app #WORKDIR 指令指定了工作路径 【发布项目代码文件存放目录】
ENTRYPOINT ["dotnet","app.dll"] #指令指定了应用程序入口 容器启动后执行的命令
dotnet HTEWebApiServer.dll
容器启动
docker run -d --name myrongqi8 -p 10002:10020 hte:v1 dotnet HTEWebApiServer.dll --webApiServiceAddress http://0.0.0.0:10020 --serviceName htewebapiserver --zkConfigServer w1.confandsa.zk.group.hex.com:2181,w2.confandsa.zk.group.hex.com:2181,w3.confandsa.zk.group.hex.com:2181 --zkAppRole Group-HTEWebApi --runScope Core991 --msGroup edudev --webApiHelp on --zkTimeOut 1000000000 --mcTimeOut 1000000000 --trace off --KPversion 2 --ser protobuf --psapp v8
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix