当前位置: 首页 > 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
http://www.lryc.cn/news/374391.html

相关文章:

  • QListWidget 插入 item,item显示自定义界面
  • Python写一个ERP系统和agent智能体协同仓库和订单的案例
  • 【计算机网络】已解决:“‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”报错
  • Web前端学堂:深入探索前端开发的核心领域
  • Java数据结构与算法(0/1背包问题)
  • LLVM 中 的 pass 及其管理机制
  • 第 5 章 监控系统 | 入门案例 - 虚拟机监控
  • 教资认定报名照片要求小于190kb…
  • 显示类控件——Calendar Widget
  • system与excel族函数区别
  • STM32存储左右互搏 模拟U盘桥接SPI总线FATS读写FLASH W25QXX
  • jrt从量变到质变
  • NLP主流大模型如GPT3/chatGPT/T5/PaLM/LLaMA/GLM的原理和差异有哪些-详细解读
  • 从MySQL到NoSQL:分析传统关系型数据库与NoSQL数据库的协同
  • 三、树和割集
  • 泛型中<>和()中的类型
  • spark mllib 特征学习笔记 (一)
  • SQLite 日期 时间
  • 飞书API 2-1:如何通过 API 创建文件夹?
  • 【APP移动端自动化测试】第一节.环境配置和adb调试工具
  • Kotlin 协程:从基础概念到开发实践
  • IPNV6
  • C++并发之锁(std::lock_guard,std::unique_lock)
  • FreeRTOS队列(queue)
  • Azure数据分析Power BI
  • 将 Python3 程序打包成 APK 并运行在 ARM 的 Android 系统中
  • 学习记录:VS2019+OpenCV3.4.1实现SURF库函数的调用
  • JVM-基础知识
  • 保密工作应党而生、伴党而行、为党而兴
  • docker login 报错: http: server gave HTTP response to HTTPS client