Docker學習 - 啓動dotnet應用

在运行 sudo docker ps -a时出现 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? service docker start   1.安裝docker, docker compose , dotnet-sdk-5.0 sudo yum install dotnet-sdk-5.0 離綫安裝 lscpu查看architecture,下載對應的linux二進制文件 tar -vxf dotnet-sdk-5.0.208-linux-x64.tar.gz 如果出現下面的錯誤,需要安裝libicu [centos@centos7 home]$ dotnet --info Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support. sudo yum install libicu   2.在apptst  publish的package目錄下新建Dockerfile
#引入镜像,低版本 docker 去掉  AS base
#换成别人做的阿里镜像
#FROM registry.cn-hangzhou.aliyuncs.com/newbe36524
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base

#配置工作目录 相当于cd
WORKDIR /app
EXPOSE 80
EXPOSE 443
  
#暴露容器端口,此端口与程序运行路径一致,可
#EXPOSE 44362

#复制文件到工作目录
COPY . .
 
#ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
#这里是配置程序运行端口,如果程序不使用默认的80端口这里一定要设置(程序运行端口)
#ENV ASPNETCORE_URLS http://+:44362

#设置时间为中国上海,默认为UTC时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#启动程序
ENTRYPOINT ["dotnet", "AppTST.HttpApi.Host.dll"]

  

  3.Build一個新的image,交互方式運行 docker build -t apitest:v1 -f /usr/app/apitest/Dockerfile . docker run -it apitest:v1 本地8080映射到容器的 80 端口,以分离(后台)模式运行容器 docker run -d -p 8080:80 apitest:v1   4.执行inspect命令,最後一行會有IP地址 分別用host ip和container ip來測試是否正常啓動 curl "http://172.17.0.3/health-status"
curl "http://192.168.0.109:8080/health-status"

[centos@centos7 ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f66386afcf87 apitest:v1 "dotnet AppTST.HttpA…" 4 minutes ago Up 4 minutes 80/tcp, 443/tcp quirky_turing [centos@centos7 ~]$ docker inspect f66386afcf87 查看container運行的存儲位置 [centos@centos7 ~]$ docker inspect d94bc009ffc3 | grep UpperDir "UpperDir": "/var/lib/docker/overlay2/f65955ab192027248565efcde485c430cb1821a6ba9ed4ed592a 那麽app運行的log位置如下 /var/lib/docker/overlay2/e7772a88904580a8fc192a850e2003beeeaac9fd67935fc07539bc30624ffefe/diff/app/Logs/   5.其它 docker export 命令根据容器 ID 将镜像导出成一个文件 docker export f299f501774c > hangger_server.tar 使用 docker import 命令则可将这个镜像文件导入进来 docker import - new_hangger_server < hangger_server.tar 可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包 docker save -o images.tar postgres:9.6 mongo:3.4 将这个镜像文件载入进来 docker load < hangge_server.tar 特别注意:两种方法不可混用。 如果使用 import 导入 save 产生的文件,虽然导入不提示错误,但是启动容器时会提示失败,会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。   查看访问记录 docker logs f66386afcf87 列出容器的端口映射或特定映射 docker port ad824fda6722 显示镜像每层的变更内容 docker history apitest:v1 --no-trunc 本地镜像的磁盘使用情况 docker system df     docker ps -a docker stop 75ccf0e70cae docker exec -it 059a62ed7eca /bin/bash docker cp 059a62ed7eca:/app/logs/serilog-PatronExperience-20211014.log /tmp/log.log   docker stats docker info docker container ls docker inspect mulesoftapi_exp-api_1 | grep log "LogPath": "/var/lib/docker/containers/059a62ed7eca924af6dcdb42a99d2cc53dc08cdce50929490aa427f8836bb72c/059a62ed7eca924af6dcdb42a99d2cc53dc08cdce50929490aa427f8836bb72c-json.log", docker inspect redemptionsystem_drs-external-api_1 | grep log "LogPath": "/var/lib/docker/containers/3a1d2f424bce9ef00ff44382b0050e8615ca6867fb21bb3533e4d5b8e2be4f77/3a1d2f424bce9ef00ff44382b0050e8615ca6867fb21bb3533e4d5b8e2be4f77-json.log",  

上一篇:dotnet C# 给结构体字段赋值非线程安全


下一篇:GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性