docker部署.netcore程序


 镜像 (Image)

  • 本质上由分层的文件系统组成,可以基于基础镜像通过文件系统分层进行继承
  • 镜像是静态的概念,其每一层文件系统都是只读的

容器 (Container)

  • 容器由镜像创建,容器被创建时本质上是在镜像分层文件系统的顶部,添加一个可读写的新层即容器层,容器层之下的为镜像层
  • 一个镜像可以创建多个容器,新创建的容器层相互独立,共享镜像层资源
  • 容器与镜像类似于对象和类的关系,镜像是用于创建容器的模板,容器是由镜像创建的实体

1.dockerfile指令

FROM

FROM <image>    #系统版本

FROM <image>:<tag> #系统版本+版本号

一般格式:FROM CentOS:7.2

在.netcore中一般是:FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base

MAINTAINER  #编辑作者的信息
RUN #基础镜像命令

RUN linux命令

一般使用&&连起来写防止镜像膨胀过大

ADD/COPY #从本地向制作的镜像中赋值文件,ADD可以复制url,可以赋值tar并解压。一般使用copy就行
ENTRYPOINT  #容器启动后执行的命令
EXPOSE  #声明的仅仅是端口,在使用docker run -p时,会自动随机映射EXPOSE的端口
WORKDIR /app #工作目录,必须是已经创建好的。docker build构建镜像的过程中每一个run都会新建一层,只用通过此指令指定的目录才会在每一层都存在

2.netcore单系统部署

2.1事例Dockerfile文件

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
EXPOSE 5000
COPY . .
ENTRYPOINT ["dotnet", "testDocker.dll", "--urls", "http://*:5000;http://*:5001"]

2.2创建镜像

   执行格式:docker build -t <要生成的镜像的名称>  .   

        k8swebapi为镜像的名称

     结尾的 . 指dockerfile路径(.是代表上下文路径,因为dockerfile就在当前目录下)

docker build -t imgtestdocker .

2.3创建容器并启动容器

    使用docker run  

    -d代表是后台运行容器

    --rm指定容器停止后自动删除容器, 用docker stop  contriner 停止后自动删除该容器

    --P(大写)  宿主主机自动分配端口并关联容器暴露的5000端口,外部使用宿主主机自动分配的端口访问web api服务

    --name    容器名称

docker run -d --rm -P --name contTestDock imgtestdock

2.4.通过docker ps查看创建的容器,和宿主自动分配的端口49153。 容器内访问api服务端口5000, 容器外访问api服务端口49453

docker ps

 

PS:进入contTestDock容器,查看app目录,再请求api服务,如下所示:

docker exec -it dockerid bash
date #查看时间

docker exec -it 6a13d5065941 /bin/bash

 

 访问结果

部署文件升级

1.将本地文件复制到容器中

  docker cp 本地路径 容器Id或name:容器目录

2.将容器中的文件复制到本地文件

docker cp 容器Id或name:镜像路径 本地路径
docker cp /root/dsyzpapiupdate/ykdocker/ contTestDock:/ 

docker restart
contTestDock

 

3.系统的伸缩部署和扩容

4.软件的docker部署方式,如mysql,gitlab。

5.时区问题

docker run -v /etc/localtime:/etc/localtime


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM