docker inspect输出内容详解,推测容器运行命令

原始输出

[{"Id": "c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b","Created": "2024-08-04T02:43:24.909341103Z","Path": "/startup.sh","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 1308978,"ExitCode": 0,"Error": "","StartedAt": "2024-08-14T11:31:49.644923079Z","FinishedAt": "2024-08-14T11:31:49.206669276Z"},"Image": "sha256:629ec4df10b1d0202f30c9f379dea586ead067722597cedb0f3ebb9eb3337065","ResolvConfPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/resolv.conf","HostnamePath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/hostname","HostsPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/hosts","LogPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b-json.log","Name": "/lmdeploy","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "docker-default","ExecIDs": null,"HostConfig": {"Binds": ["/home/hlj/.cache/huggingface:/root/.cache/huggingface"],"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {"max-file": "3","max-size": "10m"}},"NetworkMode": "bridge","PortBindings": {"23333/tcp": [{"HostIp": "","HostPort": "23333"}]},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"ConsoleSize": [60,121],"CapAdd": null,"CapDrop": null,"CgroupnsMode": "private","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "host","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": ["label=disable"],"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "nvidia","Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": [],"BlkioDeviceWriteBps": [],"BlkioDeviceReadIOps": [],"BlkioDeviceWriteIOps": [],"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": [{"Driver": "","Count": -1,"DeviceIDs": null,"Capabilities": [["gpu"]],"Options": {}}],"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": null,"PidsLimit": null,"Ulimits": [],"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware","/sys/devices/virtual/powercap"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2-init/diff:/var/lib/docker/overlay2/kd1a3js9cf8p1x3dih4oqksay/diff:/var/lib/docker/overlay2/e83a275c474b137f32aeec2d8b0835ddf5ed8ecd3671d7d83034b9ce62bd42e1/diff:/var/lib/docker/overlay2/1e389356a5fc4a57d53fbb5f806fb7ae294d0fb9cf32797b541b4756b309d70e/diff:/var/lib/docker/overlay2/da8f6d57b66412e24313af526b34b030be59fbe69d58d978bfc8910fb0a02768/diff:/var/lib/docker/overlay2/22a01998c4071857ea37a948e3aea91ffd7839f0cee89f78167b2d16bf862dbe/diff:/var/lib/docker/overlay2/0edeaba0eacef4e0ddc86dda01e4675257701cb12546b4d0ece8509313193420/diff:/var/lib/docker/overlay2/1bdd123142274c8dd7439373506bc3a13b997803ae1f91e4ca1a4f7b42f747e6/diff:/var/lib/docker/overlay2/b8add21d81efb9c7ac49e96cea14143b5c1e44fcafbc4ade08040039a54cf794/diff:/var/lib/docker/overlay2/c550471aadac0dd9cf61d894cf0c7ba4f194e44b103617610048dd57243778af/diff:/var/lib/docker/overlay2/d1353c33022ef4af2f85de516e6656201cdf13e66b32630a9e9450883181bd41/diff:/var/lib/docker/overlay2/e41238625eb790dde7e2e83c4679f7b0e473eaf8e5d3adbfd098b273bdb210b9/diff:/var/lib/docker/overlay2/2144bef9db48678df41a01bd901a7b7ddd282ace8ceb902910d3d5152a00645f/diff:/var/lib/docker/overlay2/4c2f9582f9a15ca6626af7337211304f11f3e6d23e7f0758530245a50d220078/diff:/var/lib/docker/overlay2/abc505d36333267f450108bd96c00ac5ff1e128c260e61e7997da2be301a0d51/diff:/var/lib/docker/overlay2/62681593678b2b8fda5b477cccb9c7c65ab998c72b0206af834f36fb8cc756ef/diff:/var/lib/docker/overlay2/010d7cb67f6ca5714671338cca64799957ef1e4e955a0ec2062d623a0f21ac45/diff:/var/lib/docker/overlay2/a4c223bc609c7c2b6f480c31ade268fba8a1c186ab9401e3132a38ebf4bc271c/diff:/var/lib/docker/overlay2/b563a8c0ff49d555df389db0bb2495ba402d6847491f756c7fa03589bf4569fe/diff:/var/lib/docker/overlay2/a88230089aad72f7fb7afeb1a2ab108aa78e5a88cc1207e7c3f5fe377fa62c71/diff:/var/lib/docker/overlay2/809390ce9fd3b8ea936f6262068ceeee0b337a9e46c297b22850f516c4f6fc36/diff:/var/lib/docker/overlay2/49b671d21d41637d8c448b6d30ab8a26e45fcd89ef427bb015053c2a99d872bb/diff:/var/lib/docker/overlay2/fcee4f32a58f9552a4fefc701ff02e3d0afe71b2acd013e3d8340b322bbbe778/diff:/var/lib/docker/overlay2/3f38c8a89ef97cba50090290c7805db38f1656b11665a8b60c99d020d3a5af7e/diff:/var/lib/docker/overlay2/808d9a4cb41fd6b70a13bec963e8082cb02a01657881baedff0d0ee69f44869f/diff:/var/lib/docker/overlay2/4cee062cf5bef4a43685e9e85531c20fb8b9cdfcbca79ecebf432ca442f3e499/diff:/var/lib/docker/overlay2/f8a3e6806a1464a4905f7a0aa7bcf25333e18f9ad2ddb56a9e0001bd8792f28e/diff:/var/lib/docker/overlay2/1cd44855a28cdd0506b113fd73c296a8761be0253d6fe6ca1d9db94b005b9f7b/diff:/var/lib/docker/overlay2/31d1b514bb95906f8d3106674f16472703e942bec3796162ace45fc36141304c/diff:/var/lib/docker/overlay2/9fdf9b9d162ffa05f103c66464ff92ed89e8d38ac51c7c759540747d09d79d37/diff:/var/lib/docker/overlay2/02579a706091284489d97589cca37a33e2d34839030940118eb4241921f144ce/diff","MergedDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/merged","UpperDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/diff","WorkDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/work"},"Name": "overlay2"},"Mounts": [{"Type": "bind","Source": "/home/hlj/.cache/huggingface","Destination": "/root/.cache/huggingface","Mode": "","RW": true,"Propagation": "rprivate"}],"Config": {"Hostname": "c2496d852ee3","Domainname": "","User": "","AttachStdin": false,"AttachStdout": true,"AttachStderr": true,"ExposedPorts": {"23333/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["HUGGING_FACE_HUB_TOKEN=<secret>","PATH=/opt/py38/bin:/opt/tritonserver/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin","CUDA_VERSION=11.8.0.065","CUDA_DRIVER_VERSION=520.61.05","CUDA_CACHE_DISABLE=1","NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=","_CUDA_COMPAT_PATH=/usr/local/cuda/compat","ENV=/etc/shinit_v2","BASH_ENV=/etc/bash.bashrc","SHELL=/bin/bash","NVIDIA_REQUIRE_CUDA=cuda>=9.0","NCCL_VERSION=2.15.5","CUBLAS_VERSION=11.11.3.6","CUFFT_VERSION=10.9.0.58","CURAND_VERSION=10.3.0.86","CUSPARSE_VERSION=11.7.5.86","CUSOLVER_VERSION=11.4.1.48","CUTENSOR_VERSION=1.6.1.5","NPP_VERSION=11.8.0.86","NVJPEG_VERSION=11.9.0.86","CUDNN_VERSION=8.7.0.84","TRT_VERSION=8.5.1.7","TRTOSS_VERSION=22.12","NSIGHT_SYSTEMS_VERSION=2022.4.2.1","NSIGHT_COMPUTE_VERSION=2022.3.0.22","DALI_VERSION=1.20.0","DALI_BUILD=6562491","POLYGRAPHY_VERSION=0.43.1","TRANSFORMER_ENGINE_VERSION=0.3","LD_LIBRARY_PATH=/opt/tritonserver/lib:/opt/tritonserver/backends/onnxruntime:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64","NVIDIA_VISIBLE_DEVICES=all","NVIDIA_DRIVER_CAPABILITIES=compute,utility,video","NVIDIA_PRODUCT_NAME=Triton Server","GDRCOPY_VERSION=2.3","HPCX_VERSION=2.13","MOFED_VERSION=5.4-rdmacore36.0","OPENUCX_VERSION=1.14.0","OPENMPI_VERSION=4.1.4","RDMACORE_VERSION=36.0","OPAL_PREFIX=/opt/hpcx/ompi","OMPI_MCA_coll_hcoll_enable=0","LIBRARY_PATH=/usr/local/cuda/lib64/stubs:","TRITON_SERVER_VERSION=2.29.0","NVIDIA_TRITON_SERVER_VERSION=22.12","TF_ADJUST_HUE_FUSED=1","TF_ADJUST_SATURATION_FUSED=1","TF_ENABLE_WINOGRAD_NONFUSED=1","TF_AUTOTUNE_THRESHOLD=2","TRITON_SERVER_GPU_ENABLED=1","TRITON_SERVER_USER=triton-server","DEBIAN_FRONTEND=noninteractive","TCMALLOC_RELEASE_RATE=200","DCGM_VERSION=2.2.9","NVIDIA_BUILD_ID=50109463","NCCL_LAUNCH_MODE=GROUP","TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas"],"Cmd": null,"Image": "lmdeploy:1.0","Volumes": null,"WorkingDir": "/opt/lmdeploy","Entrypoint": ["/startup.sh"],"OnBuild": null,"Labels": {"com.amazonaws.sagemaker.capabilities.accept-bind-to-port": "true","com.amazonaws.sagemaker.capabilities.multi-models": "true","com.nvidia.build.id": "50109463","com.nvidia.build.ref": "1a651ccb23c8f4416b5540653b207154a531194d","com.nvidia.cublas.version": "11.11.3.6","com.nvidia.cuda.version": "9.0","com.nvidia.cudnn.version": "8.7.0.84","com.nvidia.cufft.version": "10.9.0.58","com.nvidia.curand.version": "10.3.0.86","com.nvidia.cusolver.version": "11.4.1.48","com.nvidia.cusparse.version": "11.7.5.86","com.nvidia.cutensor.version": "1.6.1.5","com.nvidia.nccl.version": "2.15.5","com.nvidia.npp.version": "11.8.0.86","com.nvidia.nsightcompute.version": "2022.3.0.22","com.nvidia.nsightsystems.version": "2022.4.2.1","com.nvidia.nvjpeg.version": "11.9.0.86","com.nvidia.tensorrt.version": "8.5.1.7","com.nvidia.tensorrtoss.version": "22.12","com.nvidia.tritonserver.version": "2.29.0","com.nvidia.volumes.needed": "nvidia_driver"}},"NetworkSettings": {"Bridge": "","SandboxID": "209975bf9949fed38210ded62b87b4487f78391ab994bb7e572ba9ed2dada380","SandboxKey": "/var/run/docker/netns/209975bf9949","Ports": {"23333/tcp": [{"HostIp": "0.0.0.0","HostPort": "23333"},{"HostIp": "::","HostPort": "23333"}]},"HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "8e1b1258d03f72237ebaecca9ff78d8951a4b281947bef16b8bc774feca42937","Gateway": "172.16.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.16.0.5","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:10:00:05","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:10:00:05","DriverOpts": null,"NetworkID": "b914ed43880d4258355ef85e24f301f098f06a0a4c1d17d826cbb7b4e3881fdb","EndpointID": "8e1b1258d03f72237ebaecca9ff78d8951a4b281947bef16b8bc774feca42937","Gateway": "172.16.0.1","IPAddress": "172.16.0.5","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DNSNames": null}}}}
]

容器基本信息

{"Id": "c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b","Created": "2024-08-04T02:43:24.909341103Z","Path": "/startup.sh","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 1308978,"ExitCode": 0,"Error": "","StartedAt": "2024-08-14T11:31:49.644923079Z","FinishedAt": "2024-08-14T11:31:49.206669276Z"},"Image": "sha256:629ec4df10b1d0202f30c9f379dea586ead067722597cedb0f3ebb9eb3337065","ResolvConfPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/resolv.conf","HostnamePath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/hostname","HostsPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/hosts","LogPath": "/var/lib/docker/containers/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b/c2496d852ee3affd295a177e9f26f163a53da8d11e3708d6a479f189f707ad0b-json.log","Name": "/lmdeploy","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "docker-default","ExecIDs": null
}
  • Id: 容器的唯一标识符。
  • Created: 容器创建的时间。
  • Path: 容器启动时执行的命令,这里是 /startup.sh
  • Args: 启动命令的参数,这里是空数组,表示没有额外参数。
  • State: 容器的当前状态,包括是否正在运行、进程ID等。
    • Status: 容器的当前状态,这里是 running
    • Running: 指示容器是否正在运行。
    • Paused: 指示容器是否处于暂停状态。
    • Restarting: 指示容器是否正在重启。
    • OOMKilled: 指示容器是否因内存不足被杀死。
    • Dead: 指示容器是否已死。
    • Pid: 容器内的主进程的 PID。
    • ExitCode: 容器的退出代码。
    • Error: 容器的错误信息。
    • StartedAt: 容器的启动时间。
    • FinishedAt: 容器的结束时间。
  • Image: 容器镜像的SHA256标识符。
  • ResolvConfPath: 容器内的 resolv.conf 文件路径。
  • HostnamePath: 容器内的 hostname 文件路径。
  • HostsPath: 容器内的 hosts 文件路径。
  • LogPath: 容器日志文件的路径。
  • Name: 容器的名称,这里是 /lmdeploy
  • RestartCount: 容器的重启次数。
  • Driver: 使用的存储驱动,这里是 overlay2
  • Platform: 容器运行的平台,这里是 linux
  • MountLabel: 安全标签。
  • ProcessLabel: 安全进程标签。
  • AppArmorProfile: 使用的AppArmor配置,这里是 docker-default
  • ExecIDs: 当前在容器中执行的命令ID,这里是 null

主机配置

{"HostConfig": {"Binds": ["/home/hlj/.cache/huggingface:/root/.cache/huggingface"],"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {"max-file": "3","max-size": "10m"}},"NetworkMode": "bridge","PortBindings": {"23333/tcp": [{"HostIp": "","HostPort": "23333"}]},"RestartPolicy": {"Name": "no","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"ConsoleSize": [60,121],"CapAdd": null,"CapDrop": null,"CgroupnsMode": "private","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "host","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": ["label=disable"],"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "nvidia","Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": [],"BlkioDeviceWriteBps": [],"BlkioDeviceReadIOps": [],"BlkioDeviceWriteIOps": [],"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": [{"Driver": "","Count": -1,"DeviceIDs": null,"Capabilities": [["gpu"]],"Options": {}}],"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": null,"PidsLimit": null,"Ulimits": [],"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware","/sys/devices/virtual/powercap"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]}
}
  • Binds: 挂载的卷,这里将主机的 /home/hlj/.cache/huggingface 挂载到容器的 /root/.cache/huggingface
  • LogConfig: 日志配置,使用 json-file 日志驱动,并设置最大文件数和大小。
  • NetworkMode: 网络模式,这里是 bridge
  • PortBindings: 端口绑定,将主机的 23333 端口映射到容器的 23333 端口。
  • RestartPolicy: 重启策略,这里是 no,表示不自动重启。
  • IpcMode: IPC 模式,这里是 host,表示共享主机的 IPC 命名空间。
  • Runtime: 容器运行时,这里是 nvidia,表示使用 NVIDIA 运行时。
  • DeviceRequests: 设备请求,这里请求 GPU 设备。

存储驱动信息

{"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2-init/diff:/var/lib/docker/overlay2/kd1a3js9cf8p1x3dih4oqksay/diff:/var/lib/docker/overlay2/e83a275c474b137f32aeec2d8b0835ddf5ed8ecd3671d7d83034b9ce62bd42e1/diff:/var/lib/docker/overlay2/1e389356a5fc4a57d53fbb5f806fb7ae294d0fb9cf32797b541b4756b309d70e/diff:/var/lib/docker/overlay2/da8f6d57b66412e24313af526b34b030be59fbe69d58d978bfc8910fb0a02768/diff:/var/lib/docker/overlay2/22a01998c4071857ea37a948e3aea91ffd7839f0cee89f78167b2d16bf862dbe/diff:/var/lib/docker/overlay2/0edeaba0eacef4e0ddc86dda01e4675257701cb12546b4d0ece8509313193420/diff:/var/lib/docker/overlay2/1bdd123142274c8dd7439373506bc3a13b997803ae1f91e4ca1a4f7b42f747e6/diff:/var/lib/docker/overlay2/b8add21d81efb9c7ac49e96cea14143b5c1e44fcafbc4ade08040039a54cf794/diff:/var/lib/docker/overlay2/c550471aadac0dd9cf61d894cf0c7ba4f194e44b103617610048dd57243778af/diff:/var/lib/docker/overlay2/d1353c33022ef4af2f85de516e6656201cdf13e66b32630a9e9450883181bd41/diff:/var/lib/docker/overlay2/e41238625eb790dde7e2e83c4679f7b0e473eaf8e5d3adbfd098b273bdb210b9/diff:/var/lib/docker/overlay2/2144bef9db48678df41a01bd901a7b7ddd282ace8ceb902910d3d5152a00645f/diff:/var/lib/docker/overlay2/4c2f9582f9a15ca6626af7337211304f11f3e6d23e7f0758530245a50d220078/diff:/var/lib/docker/overlay2/abc505d36333267f450108bd96c00ac5ff1e128c260e61e7997da2be301a0d51/diff:/var/lib/docker/overlay2/62681593678b2b8fda5b477cccb9c7c65ab998c72b0206af834f36fb8cc756ef/diff:/var/lib/docker/overlay2/010d7cb67f6ca5714671338cca64799957ef1e4e955a0ec2062d623a0f21ac45/diff:/var/lib/docker/overlay2/a4c223bc609c7c2b6f480c31ade268fba8a1c186ab9401e3132a38ebf4bc271c/diff:/var/lib/docker/overlay2/b563a8c0ff49d555df389db0bb2495ba402d6847491f756c7fa03589bf4569fe/diff:/var/lib/docker/overlay2/a88230089aad72f7fb7afeb1a2ab108aa78e5a88cc1207e7c3f5fe377fa62c71/diff:/var/lib/docker/overlay2/809390ce9fd3b8ea936f6262068ceeee0b337a9e46c297b22850f516c4f6fc36/diff:/var/lib/docker/overlay2/49b671d21d41637d8c448b6d30ab8a26e45fcd89ef427bb015053c2a99d872bb/diff:/var/lib/docker/overlay2/fcee4f32a58f9552a4fefc701ff02e3d0afe71b2acd013e3d8340b322bbbe778/diff:/var/lib/docker/overlay2/3f38c8a89ef97cba50090290c7805db38f1656b11665a8b60c99d020d3a5af7e/diff:/var/lib/docker/overlay2/808d9a4cb41fd6b70a13bec963e8082cb02a01657881baedff0d0ee69f44869f/diff:/var/lib/docker/overlay2/4cee062cf5bef4a43685e9e85531c20fb8b9cdfcbca79ecebf432ca442f3e499/diff:/var/lib/docker/overlay2/f8a3e6806a1464a4905f7a0aa7bcf25333e18f9ad2ddb56a9e0001bd8792f28e/diff:/var/lib/docker/overlay2/1cd44855a28cdd0506b113fd73c296a8761be0253d6fe6ca1d9db94b005b9f7b/diff:/var/lib/docker/overlay2/31d1b514bb95906f8d3106674f16472703e942bec3796162ace45fc36141304c/diff:/var/lib/docker/overlay2/9fdf9b9d162ffa05f103c66464ff92ed89e8d38ac51c7c759540747d09d79d37/diff:/var/lib/docker/overlay2/02579a706091284489d97589cca37a33e2d34839030940118eb4241921f144ce/diff","MergedDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/merged","UpperDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/diff","WorkDir": "/var/lib/docker/overlay2/ddf24cd9ee208b8219020834967b5e5cf84f570879a9ddd7cefaa5968db598b2/work"},"Name": "overlay2"}
}
  • LowerDir: 叠加文件系统的下层目录。
  • MergedDir: 叠加文件系统的合并目录。
  • UpperDir: 叠加文件系统的上层目录。
  • WorkDir: 叠加文件系统的工作目录。
  • Name: 使用的存储驱动名称,这里是 overlay2

挂载点信息

{"Mounts": [{"Type": "bind","Source": "/home/hlj/.cache/huggingface","Destination": "/root/.cache/huggingface","Mode": "","RW": true,"Propagation": "rprivate"}]
}
  • Type: 挂载类型,这里是 bind
  • Source: 主机上的源路径。
  • Destination: 容器内的目标路径。
  • Mode: 挂载模式。
  • RW: 是否可读写。
  • Propagation: 挂载传播设置,这里是 rprivate

容器配置

{"Config": {"Hostname": "c2496d852ee3","Env": ["HUGGING_FACE_HUB_TOKEN=<secret>","PATH=/opt/py38/bin:/opt/tritonserver/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin","CUDA_VERSION=11.8.0.065","CUDA_DRIVER_VERSION=520.61.05","CUDA_CACHE_DISABLE=1","NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=","_CUDA_COMPAT_PATH=/usr/local/cuda/compat","ENV=/etc/shinit_v2","BASH_ENV=/etc/bash.bashrc","SHELL=/bin/bash","NVIDIA_REQUIRE_CUDA=cuda>=9.0","NCCL_VERSION=2.15.5","CUBLAS_VERSION=11.11.3.6","CUFFT_VERSION=10.9.0.58","CURAND_VERSION=10.3.0.86","CUSPARSE_VERSION=11.7.5.86","CUSOLVER_VERSION=11.4.1.48","CUTENSOR_VERSION=1.6.1.5","NPP_VERSION=11.8.0.86","NVJPEG_VERSION=11.9.0.86","CUDNN_VERSION=8.7.0.84","TRT_VERSION=8.5.1.7","TRTOSS_VERSION=22.12","NSIGHT_SYSTEMS_VERSION=2022.4.2.1","NSIGHT_COMPUTE_VERSION=2022.3.0.22","DALI_VERSION=1.20.0","DALI_BUILD=6562491","POLYGRAPHY_VERSION=0.43.1","TRANSFORMER_ENGINE_VERSION=0.3","LD_LIBRARY_PATH=/opt/tritonserver/lib:/opt/tritonserver/backends/onnxruntime:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64","NVIDIA_VISIBLE_DEVICES=all","NVIDIA_DRIVER_CAPABILITIES=compute,utility,video","NVIDIA_PRODUCT_NAME=Triton Server","GDRCOPY_VERSION=2.3","HPCX_VERSION=2.13","MOFED_VERSION=5.4-rdmacore36.0","OPENUCX_VERSION=1.14.0","OPENMPI_VERSION=4.1.4","RDMACORE_VERSION=36.0","OPAL_PREFIX=/opt/hpcx/ompi","OMPI_MCA_coll_hcoll_enable=0","LIBRARY_PATH=/usr/local/cuda/lib64/stubs:","TRITON_SERVER_VERSION=2.29.0","NVIDIA_TRITON_SERVER_VERSION=22.12","TF_ADJUST_HUE_FUSED=1","TF_ADJUST_SATURATION_FUSED=1","TF_ENABLE_WINOGRAD_NONFUSED=1","TF_AUTOTUNE_THRESHOLD=2","TRITON_SERVER_GPU_ENABLED=1","TRITON_SERVER_USER=triton-server","DEBIAN_FRONTEND=noninteractive","TCMALLOC_RELEASE_RATE=200","DCGM_VERSION=2.2.9","NVIDIA_BUILD_ID=50109463","NCCL_LAUNCH_MODE=GROUP","TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas"],"Image": "lmdeploy:1.0","WorkingDir": "/opt/lmdeploy","Entrypoint": ["/startup.sh"],"OnBuild": null,"Labels": {"com.amazonaws.sagemaker.capabilities.accept-bind-to-port": "true","com.amazonaws.sagemaker.capabilities.multi-models": "true","com.nvidia.build.id": "50109463","com.nvidia.build.ref": "1a651ccb23c8f4416b5540653b207154a531194d","com.nvidia.cublas.version": "11.11.3.6","com.nvidia.cuda.version": "9.0","com.nvidia.cudnn.version": "8.7.0.84","com.nvidia.cufft.version": "10.9.0.58","com.nvidia.curand.version": "10.3.0.86","com.nvidia.cusolver.version": "11.4.1.48","com.nvidia.cusparse.version": "11.7.5.86","com.nvidia.cutensor.version": "1.6.1.5","com.nvidia.nccl.version": "2.15.5","com.nvidia.npp.version": "11.8.0.86","com.nvidia.nsightcompute.version": "2022.3.0.22","com.nvidia.nsightsystems.version": "2022.4.2.1","com.nvidia.nvjpeg.version": "11.9.0.86","com.nvidia.tensorrt.version": "8.5.1.7","com.nvidia.tensorrtoss.version": "22.12","com.nvidia.tritonserver.version": "2.29.0","com.nvidia.volumes.needed": "nvidia_driver"}}
}
  • Hostname: 容器的主机名。
  • Env: 容器的环境变量列表。
  • Image: 使用的镜像,这里是 lmdeploy:1.0
  • WorkingDir: 容器的工作目录,这里是 /opt/lmdeploy
  • Entrypoint: 容器启动时执行的命令,这里是 /startup.sh
  • OnBuild: 构建时触发的指令,这里是 null
  • Labels: 为容器设置的标签,用于元数据和管理。

网络设置

{"NetworkSettings": {"Bridge": "","SandboxID": "209975bf9949fed38210ded62b87b4487f78391ab994bb7e572ba9ed2dada380","SandboxKey": "/var/run/docker/netns/209975bf9949","Ports": {"23333/tcp": [{"HostIp": "0.0.0.0","HostPort": "23333"},{"HostIp": "::","HostPort": "23333"}]},"HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "8e1b1258d03f72237ebaecca9ff78d8951a4b281947bef16b8bc774feca42937","Gateway": "172.16.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.16.0.5","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:10:00:05","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:10:00:05","DriverOpts": null,"NetworkID": "b914ed43880d4258355ef85e24f301f098f06a0a4c1d17d826cbb7b4e3881fdb","EndpointID": "8e1b1258d03f72237ebaecca9ff78d8951a4b281947bef16b8bc774feca42937","Gateway": "172.16.0.1","IPAddress": "172.16.0.5","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DNSNames": null}}}
}
  • Bridge: 桥接网络的名称,这里是空字符串。
  • SandboxID: 容器的网络沙箱ID。
  • SandboxKey: 网络沙箱的键。
  • Ports: 容器的端口映射,将主机的 23333 端口映射到容器的 23333 端口。
  • HairpinMode: 是否启用发夹模式,这里是 false
  • LinkLocalIPv6Address: 链路本地IPv6地址,这里是空字符串。
  • LinkLocalIPv6PrefixLen: 链路本地IPv6前缀长度,这里是 0
  • SecondaryIPAddresses: 第二个IP地址,这里是 null
  • SecondaryIPv6Addresses: 第二个IPv6地址,这里是 null
  • EndpointID: 网络端点ID。
  • Gateway: 网关地址,这里是 172.16.0.1
  • GlobalIPv6Address: 全局IPv6地址,这里是空字符串。
  • GlobalIPv6PrefixLen: 全局IPv6前缀长度,这里是 0
  • IPAddress: 容器的IP地址,这里是 172.16.0.5
  • IPPrefixLen: 容器的IP前缀长度,这里是 16
  • IPv6Gateway: IPv6网关地址,这里是空字符串。
  • MacAddress: 容器的MAC地址,这里是 02:42:ac:10:00:05
  • Networks: 容器的网络配置,这里是 bridge 网络。
    • IPAMConfig: IP地址管理配置,这里是 null
    • Links: 容器链接,这里是 null
    • Aliases: 网络别名,这里是 null
    • MacAddress: 网络的MAC地址,这里是 02:42:ac:10:00:05
    • DriverOpts: 网络驱动选项,这里是 null
    • NetworkID: 网络ID,这里是 b914ed43880d4258355ef85e24f301f098f06a0a4c1d17d826cbb7b4e3881fdb
    • EndpointID: 网络端点ID,这里是 8e1b1258d03f72237ebaecca9ff78d8951a4b281947bef16b8bc774feca42937
    • Gateway: 网关地址,这里是 172.16.0.1
    • IPAddress: 容器的IP地址,这里是 172.16.0.5
    • IPPrefixLen: 容器的IP前缀长度,这里是 16
    • IPv6Gateway: IPv6网关地址,这里是空字符串。
    • GlobalIPv6Address: 全局IPv6地址,这里是空字符串。
    • GlobalIPv6PrefixLen: 全局IPv6前缀长度,这里是 0
    • DNSNames: DNS名称,这里是 null

总结

通过 docker inspect 命令的详细输出,我们可以看到容器的各种配置和状态信息,包括基本信息、主机配置、存储驱动信息、挂载点信息、容器配置和网络设置。这些信息可以帮助我们了解容器的运行环境、资源使用情况以及网络配置等。

推测的 Docker 运行命令

通过分析 docker inspect 的输出,我们可以推测出容器的运行命令:

docker run -d \--name lmdeploy \--runtime nvidia \--gpus all \-v /home/hlj/.cache/huggingface:/root/.cache/huggingface \-p 23333:23333 \--ipc=host \-w /opt/lmdeploy \--env "HUGGING_FACE_HUB_TOKEN=<secret>" \--env "PATH=/opt/py38/bin:/opt/tritonserver/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin" \--env "CUDA_VERSION=11.8.0.065" \--env "CUDA_DRIVER_VERSION=520.61.05" \--env "CUDA_CACHE_DISABLE=1" \--env "NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=" \--env "_CUDA_COMPAT_PATH=/usr/local/cuda/compat" \--env "ENV=/etc/shinit_v2" \--env "BASH_ENV=/etc/bash.bashrc" \--env "SHELL=/bin/bash" \--env "NVIDIA_REQUIRE_CUDA=cuda>=9.0" \--env "NCCL_VERSION=2.15.5" \--env "CUBLAS_VERSION=11.11.3.6" \--env "CUFFT_VERSION=10.9.0.58" \--env "CURAND_VERSION=10.3.0.86" \--env "CUSPARSE_VERSION=11.7.5.86" \--env "CUSOLVER_VERSION=11.4.1.48" \--env "CUTENSOR_VERSION=1.6.1.5" \--env "NPP_VERSION=11.8.0.86" \--env "NVJPEG_VERSION=11.9.0.86" \--env "CUDNN_VERSION=8.7.0.84" \--env "TRT_VERSION=8.5.1.7" \--env "TRTOSS_VERSION=22.12" \--env "NSIGHT_SYSTEMS_VERSION=2022.4.2.1" \--env "NSIGHT_COMPUTE_VERSION=2022.3.0.22" \--env "DALI_VERSION=1.20.0" \--env "DALI_BUILD=6562491" \--env "POLYGRAPHY_VERSION=0.43.1" \--env "TRANSFORMER_ENGINE_VERSION=0.3" \--env "LD_LIBRARY_PATH=/opt/tritonserver/lib:/opt/tritonserver/backends/onnxruntime:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64" \--env "NVIDIA_VISIBLE_DEVICES=all" \--env "NVIDIA_DRIVER_CAPABILITIES=compute,utility,video" \--env "NVIDIA_PRODUCT_NAME=Triton Server" \--env "GDRCOPY_VERSION=2.3" \--env "HPCX_VERSION=2.13" \--env "MOFED_VERSION=5.4-rdmacore36.0" \--env "OPENUCX_VERSION=1.14.0" \--env "OPENMPI_VERSION=4.1.4" \--env "RDMACORE_VERSION=36.0" \--env "OPAL_PREFIX=/opt/hpcx/ompi" \--env "OMPI_MCA_coll_hcoll_enable=0" \--env "LIBRARY_PATH=/usr/local/cuda/lib64/stubs:" \--env "TRITON_SERVER_VERSION=2.29.0" \--env "NVIDIA_TRITON_SERVER_VERSION=22.12" \--env "TF_ADJUST_HUE_FUSED=1" \--env "TF_ADJUST_SATURATION_FUSED=1" \--env "TF_ENABLE_WINOGRAD_NONFUSED=1" \--env "TF_AUTOTUNE_THRESHOLD=2" \--env "TRITON_SERVER_GPU_ENABLED=1" \--env "TRITON_SERVER_USER=triton-server" \--env "DEBIAN_FRONTEND=noninteractive" \--env "TCMALLOC_RELEASE_RATE=200" \--env "DCGM_VERSION=2.2.9" \--env "NVIDIA_BUILD_ID=50109463" \--env "NCCL_LAUNCH_MODE=GROUP" \--env "TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas" \lmdeploy:1.0 /startup.sh

解释

  • -d:以后台模式运行容器。
  • --name lmdeploy:容器名称为 lmdeploy
  • --runtime nvidia:指定使用 NVIDIA 运行时。
  • --gpus all:允许容器访问所有 GPU。
  • -v /home/hlj/.cache/huggingface:/root/.cache/huggingface:挂载主机目录到容器内。
  • -p 23333:23333:将宿主机的 23333 端口映射到容器的 23333 端口。
  • --ipc=host:使容器使用主机的 IPC 命名空间。
  • -w /opt/lmdeploy:设置工作目录。
  • --env:设置多个环境变量。
  • lmdeploy:1.0:使用 lmdeploy:1.0 镜像。
  • /startup.sh:执行 /startup.sh 脚本。

通过这些信息,我们可以准确地重现容器的启动命令。

你可以将通过 -e 参数设置的环境变量放到 startup.sh 脚本中。这样可以使你的 Docker 启动命令更加简洁,并且将环境变量的配置集中到一个地方,便于管理。

将环境变量移到 startup.sh

你可以在 startup.sh 脚本的顶部添加所有需要的环境变量。例如:

#!/bin/bash# 设置环境变量
export HUGGING_FACE_HUB_TOKEN=<secret>
export PATH=/opt/py38/bin:/opt/tritonserver/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin
export CUDA_VERSION=11.8.0.065
export CUDA_DRIVER_VERSION=520.61.05
export CUDA_CACHE_DISABLE=1
export NVIDIA_REQUIRE_JETPACK_HOST_MOUNTS=
export _CUDA_COMPAT_PATH=/usr/local/cuda/compat
export ENV=/etc/shinit_v2
export BASH_ENV=/etc/bash.bashrc
export SHELL=/bin/bash
export NVIDIA_REQUIRE_CUDA=cuda>=9.0
export NCCL_VERSION=2.15.5
export CUBLAS_VERSION=11.11.3.6
export CUFFT_VERSION=10.9.0.58
export CURAND_VERSION=10.3.0.86
export CUSPARSE_VERSION=11.7.5.86
export CUSOLVER_VERSION=11.4.1.48
export CUTENSOR_VERSION=1.6.1.5
export NPP_VERSION=11.8.0.86
export NVJPEG_VERSION=11.9.0.86
export CUDNN_VERSION=8.7.0.84
export TRT_VERSION=8.5.1.7
export TRTOSS_VERSION=22.12
export NSIGHT_SYSTEMS_VERSION=2022.4.2.1
export NSIGHT_COMPUTE_VERSION=2022.3.0.22
export DALI_VERSION=1.20.0
export DALI_BUILD=6562491
export POLYGRAPHY_VERSION=0.43.1
export TRANSFORMER_ENGINE_VERSION=0.3
export LD_LIBRARY_PATH=/opt/tritonserver/lib:/opt/tritonserver/backends/onnxruntime:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
export NVIDIA_VISIBLE_DEVICES=all
export NVIDIA_DRIVER_CAPABILITIES=compute,utility,video
export NVIDIA_PRODUCT_NAME=Triton Server
export GDRCOPY_VERSION=2.3
export HPCX_VERSION=2.13
export MOFED_VERSION=5.4-rdmacore36.0
export OPENUCX_VERSION=1.14.0
export OPENMPI_VERSION=4.1.4
export RDMACORE_VERSION=36.0
export OPAL_PREFIX=/opt/hpcx/ompi
export OMPI_MCA_coll_hcoll_enable=0
export LIBRARY_PATH=/usr/local/cuda/lib64/stubs:
export TRITON_SERVER_VERSION=2.29.0
export NVIDIA_TRITON_SERVER_VERSION=22.12
export TF_ADJUST_HUE_FUSED=1
export TF_ADJUST_SATURATION_FUSED=1
export TF_ENABLE_WINOGRAD_NONFUSED=1
export TF_AUTOTUNE_THRESHOLD=2
export TRITON_SERVER_GPU_ENABLED=1
export TRITON_SERVER_USER=triton-server
export DEBIAN_FRONTEND=noninteractive
export TCMALLOC_RELEASE_RATE=200
export DCGM_VERSION=2.2.9
export NVIDIA_BUILD_ID=50109463
export NCCL_LAUNCH_MODE=GROUP
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas# 运行主程序或其他命令
# 在这里添加你的主程序启动命令,例如:
# ./my_main_program

更新 Docker 启动命令

在将环境变量移到 startup.sh 后,你可以简化 Docker 启动命令:

docker run -d \--gpus all \--name lmdeploy \-p 23333:23333 \--runtime=nvidia \-v /home/hlj/.cache/huggingface:/root/.cache/huggingface \-w /opt/lmdeploy \lmdeploy:1.0 /startup.sh

注意事项

  1. 权限:确保 startup.sh 脚本具有可执行权限。如果没有,可以使用以下命令添加可执行权限:

    chmod +x /path/to/startup.sh
    
  2. 保密信息:如果 HUGGING_FACE_HUB_TOKEN 或其他环境变量包含敏感信息,确保 startup.sh 的访问权限是安全的,以防止未经授权的访问。

  3. 调试和验证:在修改 startup.sh 脚本后,建议先在本地运行并验证其功能,然后再将其用于 Docker 容器中,以确保一切按预期工作。

通过将环境变量移到 startup.sh,你可以使 Docker 启动命令更加简洁,同时也方便环境变量的管理。如果你在任何步骤遇到问题,请随时提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lambda 表达式可以传递引用为什么需要引用捕获

当 lambda 表达式被传递或存储在其他地方时&#xff0c;通过引用捕获可以确保它始终访问正确的外部变量。—— 引用捕获可以精确地控制被捕获的引用变量的作用域。如果一个 lambda 表达式被存储在一个容器中&#xff0c;并且在不同的时间点被调用&#xff0c;引用捕获可以确保它…

入门STM32—外部中断

外部中断的存在使得微控制器能够及时响应外部事件&#xff0c;避免频繁的轮询操作&#xff0c;从而提高系统的实时性、效率和低功耗性能。 1.什么是外部中断&#xff1f; 外部中断是指微控制器接收到外部引脚的信号变化时触发的中断。STM32F103系列微控制器支持多个外部中断线…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理&#xff08;MediaKeySession&#xff09;支持媒体密钥管理及媒体解密等&#xff0c;MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口&#xff0c;接口中提供了DRM相关的属性和方法&#xff0c;导入方法如下。 #include &…

学习嵌入式第二十九天

ipc进程间通信方式 PC&#xff0c;即进程间通信&#xff08;Inter-Process Communication&#xff09;&#xff0c;是操作系统中不同进程之间交换数据的一种机制。以下是一些常见的IPC方式&#xff1a; 管道&#xff1a;用于父子进程或兄弟进程之间的通信。消息队列&#xff…

selenium-java实现自动登录跳转页面

如果要一直刷新一个网页&#xff0c;总不能人工一直去点&#xff0c;所以想到大学时候学过selenium技术&#xff0c;写个脚本来一直刷新&#xff0c;因为经常写java语言&#xff0c;所以选用java语言来写 实验环境 注意&#xff0c;需要先准备好Google浏览器和Chrome-Driver驱…

除了系统问题 前端可能会有什么问题

目录 1.问题&#xff1a;页面加载缓慢&#xff0c;用户体验不佳。2.问题&#xff1a;页面在不同设备和屏幕尺寸下显示效果不佳。3.问题&#xff1a;不同浏览器对CSS和JS的支持程度不同&#xff0c;导致页面在不同浏览器下表现不一致。4.问题&#xff1a;页面中的事件处理不当&a…

代码随想录跟练第六天——LeetCode

第454题.四数相加II 力扣题目链接(opens new window) 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 为了使问题简单化&#xff0c;所有的 A, B, C, D 具有相同的长度 N&#xff0c;且 0 ≤ N ≤…

极限02:两个重要极限

1.夹逼准则 定义&#xff1a;设{ a n a_n an​}, { b n b_n bn​}, { c n c_n cn​}为实数列&#xff0c; a n ≤ b n ≤ c n a_n≤b_n≤c_n an​≤bn​≤cn​, 且 lim ⁡ n → ∞ a n lim ⁡ n → ∞ c n l \lim_{n \to \infty} a_n \lim_{n \to \infty} c_n l n→∞lim​…

ffmpeg6.1集成Plus-OpenGL-Patch滤镜

可参考上一篇文章。ffmpeg6.1集成ffmpeg-gl-transition滤镜-CSDN博客 安装思路大致相同&#xff0c; 因为 Plus-OpenGL-Patch也是基于 ffmpeg 4.x 进行开发的&#xff0c;所以在高版本上安装会有很多报错。 这是我安装后的示例&#xff0c;需要安装教程或者改代码可私信我。 …

记录一次 Redis 优化发送数据(使用管道批量传送)

一 项目背景 此前的项目中&#xff0c;鉴于客户方服务器的安全配置对 MQ 中间件有所限制&#xff0c;我们只得采用 Redis 的 list 作为简易的 MQ 来传送报文数据。然而&#xff0c;近段时间客户关闭了相关端口&#xff0c;导致大量数据积压&#xff0c;需要进行补发。在补发过程…

大数据背景下基于Python的牛油果销售数据可视化分析

注&#xff1a;源码在最后&#xff0c;只是一次实验记录&#xff0c;不合理的地方自行修改。 一 研究背景及意义 21世纪以来&#xff0c;随着科学技术的进步&#xff0c;人们的生活水平也随之大幅提升提高。在科技和经济快速发展下&#xff0c;全球已经进入了大数据时代。大数…

8.21-部署eleme项目

1.设置主从从mysql57服务器 &#xff08;1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop firewalld[rootmsater_5 ~]# setenforce 0[rootmsater_5 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.serv…

使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器

引言 Fyne 是一个用 Go 语言编写的跨平台 GUI 框架&#xff0c;它提供了一套丰富的组件来帮助开发者快速构建出漂亮的用户界面。在本文中&#xff0c;我们将通过一个简单的案例来演示如何使用 Fyne 创建 GUI 应用程序&#xff0c;该程序包含设置标签文本和自增计数器的功能。 …

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

目录 概述 思路 核心概念&#xff1a;前缀函数 1.前缀函数 2.next数组 1.考研版本 2.竞赛版本 算法过程 构建next数组 匹配过程 复杂度 Code 概述 为什么大家总觉得KMP难&#xff1f;难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组…

项目1 物流仓库管理系统

一、项目概述 本项目旨在开发一个功能全面的物流仓库管理系统&#xff0c;以数字化手段优化仓库作业流程&#xff0c;提高管理效率。系统集成了前端用户交互界面与后端数据处理逻辑&#xff0c;涵盖了从用户注册登录、订单管理、货单跟踪到用户信息维护等多个核心业务模块。通…

基于django的学生作业提交与管理系统,有管理后台,可作为课设使用

在本项目中&#xff0c;我们设计并实现了一个基于Django框架的学生作业提交与管理系统&#xff0c;旨在为教师和学生提供一个高效、便捷的作业管理平台。Django作为一个高效的Web框架&#xff0c;因其强大的功能和灵活的架构&#xff0c;使得本系统能够快速开发并扩展。 系统功…

Maven的简单使用

Maven使用 Maven的作用1. 自动构建标准化的java项目结构(1) 项目结构① 约定目录结构的意义② 约定大于配置 (2)项目创建坐标坐标的命名方法&#xff08;约定&#xff09; 2. 帮助管理java中jar包的依赖(1) 配置使用依赖引入属性配置 (2) maven指令(3) 依赖的范围(4) 依赖传递(…

【密码学】密钥管理:②密钥分配

一、密钥分配的定义 密钥分配是密钥管理生命周期中最重要的部分&#xff0c;密钥分配方案研究的是密码系统中密钥的分发和传送问题。从本质上讲&#xff0c;密钥分配为通信双方建立用于信息加密、解密签名等操作的密钥&#xff0c;以实现保密通信或认证签名等。 &#xff08;1…

华为OD题目 csv格式的数据 字符串 用C没写出来

这题对于嵌入式mcu的人来说&#xff0c;太难为了。不想解了&#xff0c;烂摆。有心情再说把。 将一个csv格式的数据文件中包含有单元格引用的内容替换为对应单元格内容的实际值。 Comma seprated values&#xff08;CSV&#xff09;逗号分隔值&#xff0c;csv格式的数据文件使用…

win10蓝牙只能发送,无法接收

给win10升了级&#xff0c;到22H2&#xff0c;蓝牙出了问题 以前接收&#xff0c;就是默认直接就可以接收。现在只能发送&#xff0c;无法接收。 在网上找了很多办法都没奏效&#xff0c;目前的方法是&#xff0c; 每次接收&#xff0c;都要操作一次&#xff0c;而不是自动接…