本文主要是介绍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",
这篇关于Docker學習 - 啓動dotnet應用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!