当前位置: 首页 > news >正文

Docker使用心得

Docker使用心得


最近使用Docker比较频繁,特此想记录一下,方便后续查找。

  • Docker常用命令
  • Docker如何配置使用GPU环境?
  • 如何使用Dockerfile构建镜像?
  • 如何使用docker compose 实例化容器?
Docker如何配置使用GPU环境

参考以下博客:
https://blog.csdn.net/walkskyer/article/details/136224041

Docker常用命令
docker ps -a # 查看docker所有进程
docker logs [容器ID/容器名] # 查看容器日志
docker inspect [容器ID/容器名] # 查看容器配置
docker start/stop/restart [容器ID/容器名] # 启动/停止/重启容器
docker images # 查看所有镜像
docker rm [容器ID/容器名] # 删除某个容器
docker stats [容器ID/容器名] # 查看容器资源占用状况
# 实例化容器
# -itd: 交互式后台运行
# --gpus all: 开启所有GPU访问
# --restart=always: 随docker启动时启动
# --network=bridge 设置网络为桥接模式
# -p: 配置端口映射, 宿主机端口:容器内端口,多个映射可传多个-p参数
# --name: 配置容器名
# -e: 环境设定,
#   TZ="Asia/Tokyo" 设置时区为东京
# -v:配置容器和宿主机路径映射关系, 宿主机路径:容器内路径, 多个映射可传多个-v参数
docker run -i -t -d --gpus all --restart=always --network=bridge -p 80:5306 --name [容器名] -e TZ="Asia/Tokyo" -v ./app:/app -v ./docker/start.sh:/app/start.sh [镜像名]:[版本号] [启动时执行的脚本或命令]
# 进入容器内部
docker exec -it --user=root [容器ID/容器名] /bin/bash
如何使用Dockerfile构建镜像

1、编写dockerfile文件
参考以下示例:

# 指定基础镜像,需要结合实际情况选定
FROM nvidia/cuda:11.7.1-devel-ubuntu20.04# 安装额外的环境依赖
RUN chsh -s /bin/bash
SHELL ["/bin/bash", "-c"]
RUN apt-get update && \apt-get install -y curl && \apt-get install -y g++-9  && \apt install -y git
RUN apt-get install -y libgl1-mesa-glx 
RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y libglib2.0-0
RUN export CC=gcc-9
RUN export CXX=g++-9
# 安装conda3
RUN curl "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh" -o /anaconda.sh && \/bin/bash /anaconda.sh -b -p /opt/conda && \rm /anaconda.sh && \ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
ENV PATH /opt/conda/bin:/opt/conda/condabin:$PATH
# 将文件临时映射到镜像内
ADD ./environment.yaml /tmp/data/# 创建虚拟环境
RUN conda env create -f /tmp/data/environment.yaml
RUN echo "conda activate igpt_bfs" >> ~/.bashrc
ENV PATH /opt/conda/envs/igpt_bfs/bin:$PATH# 安装python相关依赖
ADD . /tmp/data/
RUN source activate igpt_bfs && pip install pybind11 && conda env list
RUN pip install -r /tmp/data/igpt-pip.txt# 离线安装所需三方软件包
RUN cd /tmp/data/hnswlib/ && python setup.py install
RUN cd /tmp/data/detectron2/ && python setup.py install
RUN apt-get install -y  build-essential  git  libde265-dev  libdjvulibre-dev  libfftw3-dev  libghc-bzlib-dev  libgoogle-perftools-dev  libgraphviz-dev  libgs-dev  libheif-dev  libjbig-dev  libjemalloc-dev  libjpeg-dev  liblcms2-dev  liblqr-1-0-dev  liblzma-dev  libopenexr-dev  libopenjp2-7-dev  libpango1.0-dev  libraqm-dev  libraw-dev  librsvg2-dev  libtiff-dev  libwebp-dev  libwmf-dev  libxml2-dev  libzip-dev  libzstd-dev
RUN cd /tmp/data/ImageMagick-7.1.1-11 && ./configure && make && make install && ldconfig /usr/local/lib
RUN pip uninstall -y xformers && pip install xformers==0.0.16rc425

2、构建镜像

docker build -t [镜像名:版本] [dockerfile文件所在的路径] 
参考:
docker build -t advsiement-generation:v1 .  # . 代表当前路径
如何使用docker compose 实例化容器

1、编写compose.yaml文件
参考以下配置:

services:advertisement-generation:container_name: kozuchi-advertisement-generation # 指定实例化的容器名image: advertisement-generation:v1 # 指定镜像名和版本号restart: always                                  # 配置容器随docker启动ports:                                                  # 配置容器端口映射- 80:5306environment:- TZ=Asia/Tokyo                              # 指定时区- NVIDIA_VISIBLE_DEVICES=all    # 配置gpuvolumes:                                            # 配置容器路径映射- ../InternGPT:/app                         # 注意使用相对路径- ../docker/start.sh:/app/start.shcommand: /app/start.sh  # 容器启动时执行命令或脚本deploy:resources:reservations:devices: # 配置gpu- driver: nvidiacapabilities: [gpu]

2、实例化容器
-d:守护进程运行,测试时可省略方便查看日志

docker compose up [-d] # 有些时候需要使用 docker-compose

相关文章:

Docker使用心得

Docker使用心得 最近使用Docker比较频繁,特此想记录一下,方便后续查找。 Docker常用命令Docker如何配置使用GPU环境?如何使用Dockerfile构建镜像?如何使用docker compose 实例化容器? Docker如何配置使用GPU环境 参…...

QListWidget 插入 item,item显示自定义界面

代码示意: class ItemWidget_action_cfg_w(QWidget):... # 如下方法是在指定item下插入新的item def __do_add_item(self, item):# 获取当前item rowrow self.__list_w.indexFromItem(item).row()# 注意这里没有父类,解释见后面说明new_item QList…...

Python写一个ERP系统和agent智能体协同仓库和订单的案例

这是一个关于使用Python编写一个简单的ERP系统,并与Agent智能体协同完成仓库和订单管理的案例。在这个案例中,我们将使用Python的第三方库sqlite3进行数据库操作,以及discord库实现与Agent智能体的通信。 1. 首先,安装所需库&…...

【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错

文章目录 一、问题分析背景二、可能出错的原因三、错误代码示例四、正确解决方法与示例五、注意事项 已解决“‘ping’ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错 一、问题分析背景 在Windows操作系统中,ping 命令是一个常用的网络诊断…...

Web前端学堂:深入探索前端开发的核心领域

Web前端学堂:深入探索前端开发的核心领域 在数字化时代的浪潮中,Web前端开发扮演着至关重要的角色。它不仅是连接用户与互联网世界的桥梁,更是创造丰富、互动网络体验的关键所在。本文将带领读者走进Web前端学堂,从四个方面、五个…...

Java数据结构与算法(0/1背包问题)

前言: 背包问题(Knapsack Problem)是组合优化问题中的一个经典问题,有多个变种。这里我们讨论的是 0/1 背包问题,这是最基本的一种形式。问题的描述如下: 给定 n 件物品,每件物品有一个重量 wi 和一个价值…...

LLVM 中 的 pass 及其管理机制

概述 LLVM 编译器框架的核心概念是任务调用和执行 编译器开发者将IR分解为不同的处理对象,并将其处理过程实现为单独的pass类型。在编译器初始化,pass被实例化,并被添加到pass管理中 pass 管理器(pass manager) 以流水线的方式将各个独立的…...

第 5 章 监控系统 | 入门案例 - 虚拟机监控

👉 本文目标:为 Linux 虚拟机/服务器安装 node_exporter,实现对虚拟机/服务器的监控。 👀 本文内容: 安装 Node Exporter,暴露 Linux 指标(比如 CPU、磁盘、IO 等)配置 Prometheus 抓取 Node Exporter 暴露的指标数据配置 Recording Rule,便于缓存/加速 Dashboard 频…...

教资认定报名照片要求小于190kb…

教资认定报名照片要求小于190kb…… 要求:文件小于190kb,宽度290-300,高度408-418 方法:vx搜随时照-教资认定 直接制作合规尺寸即可,还可以打印纸质版邮寄到家...

显示类控件——Calendar Widget

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、Calendar Widget介绍核心属性重要信号代码示例: 获取选中的日期 一、Calendar Widget 介绍 …...

system与excel族函数区别

1.system #include<stdlib.h> int system(const char *command); comand是命令的路径&#xff0c;一般我们用绝对路径 system函数会创建新的进程&#xff0c;新的进程执行完返回原来的进程&#xff0c;原来的进程则继续执行后面的代码段。 如我们创建一个sys.cpp文件…...

STM32存储左右互搏 模拟U盘桥接SPI总线FATS读写FLASH W25QXX

STM32存储左右互搏 模拟U盘桥接SPI总线FATS读写FLASH W25QXX STM32的USB接口可以模拟成为U盘&#xff0c;通过FATS文件系统对连接的存储单元进行U盘方式的读写。 这里介绍STM32CUBEIDE开发平台HAL库模拟U盘桥接SPI总线FATS读写W25Q各型号FLASH的例程。 FLASH是常用的一种非易失…...

jrt从量变到质变

又是一个加班的周末&#xff0c;上周把台式机代码和数据库环境弄好了&#xff0c;这周进行大数据测试&#xff0c;直接把标本、标本医嘱、报告、报告结果、药敏结果等数据插入到1亿的规模&#xff0c;跑了一天一夜插入了5000多万个标本&#xff0c;后面接着补剩下的到一亿。 演…...

NLP主流大模型如GPT3/chatGPT/T5/PaLM/LLaMA/GLM的原理和差异有哪些-详细解读

自然语言处理&#xff08;NLP&#xff09;领域的多个大型语言模型&#xff08;如GPT-3、ChatGPT、T5、PaLM、LLaMA和GLM&#xff09;在结构和功能上有显著差异。以下是对这些模型的原理和差异的深入分析&#xff1a; GPT-3 (Generative Pre-trained Transformer 3) 虽然GPT-4…...

从MySQL到NoSQL:分析传统关系型数据库与NoSQL数据库的协同

引言 数据库是一个系统,用来管理和存储数据的地方。数据在数据库中以一种结构化的方式组织,这样能更容易地查询和处理数据。 关系型数据库是基于关系模型的数据库,它将数据存储在不同的表中,每个表都有各自的独一无二的主键。表与表之间通过共享的数据项相互关联。像MySQ…...

三、树和割集

文章目录 1、树1.1 树的定义1.2 树的性质1.3 极小连通图1.4 树的中心1.5 生成树1.5.1 最小生成树 2、 割点和桥THE END 1、树 1.1 树的定义 \qquad 定义&#xff1a; 一个连通的无圈的图称为树。 \qquad 只有一个顶点的树叫做平凡树。 \qquad 树中度为1的节点称为叶子结点。…...

泛型中<>和()中的类型

尖括号 < > 中的类型参数定义了一组可以被替换的类型占位符&#xff0c;而圆括号 (...) 内的类型使用则是这些类型参数的具体应用场景&#xff0c;展示了这些类型变量如何参与到函数的参数和返回值类型定义中去。这样设计既保证了代码的灵活性&#xff0c;又保持了类型安…...

spark mllib 特征学习笔记 (一)

PySpark MLlib 特征处理详解 PySpark MLlib 提供了丰富的特征处理工具&#xff0c;帮助我们进行特征提取、转换和选择。以下是 PySpark MLlib 中常用的特征处理类及其简要介绍。 1. Binarizer Binarizer 是将连续特征二值化的转换器。 from pyspark.ml.feature import Bina…...

SQLite 日期 时间

SQLite 日期 & 时间 SQLite 是一种轻量级的数据库管理系统&#xff0c;广泛用于各种应用程序中。它支持标准的 SQL 语法&#xff0c;包括对日期和时间的处理。在 SQLite 中&#xff0c;日期和时间可以通过几种不同的方式来存储和操作。 日期和时间数据类型 SQLite 使用 …...

飞书API 2-1:如何通过 API 创建文件夹?

本文探讨如何通过飞书的 API 来创建文件夹。通过 API 创建的文件夹&#xff0c;一般是放在共享空间&#xff0c;如果要放在个人空间&#xff0c;建议手动创建。 查看 API 文档 API 路径&#xff0c;可在飞书开放平台的服务端 API&#xff0c;依次查找云文档>云空间>文件…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...