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
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",
#引入镜像,低版本 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",
标签:log,tar,apitest,端口,dotnet,學習,Docker,docker 来源: https://www.cnblogs.com/sui84/p/15456594.html