docker启动训练容器教程

docker启动训练容器

  • 拉取容器镜像

    • 配置代理在国内拉取镜像
  • 容器启动

    • 容器使用显卡
  • conda环境配置

1、拉取容器镜像

docker pull NAME[:TAG]
  • NAME:镜像名称,如ubuntu,mysql等等
  • TAG:镜像标签,通常表示不同版本号,如果不指定则默认latest

拉取完成后使用docker images查看是否有存在拉取的镜像名称

配置代理可以参考Blog,这里不再过多赘述

2、容器启动

在 Docker 中启动容器是通过 docker run 命令完成的,它不仅可以启动容器,还可以在不存在指定镜像时从仓库拉取镜像。以下是如何启动容器的基本步骤和一些重要的注意事项。

启动容器的基本命令

命令格式如下:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • IMAGE:镜像的名字和标签(如果未指定标签,默认使用 latest)。
  • COMMANDARG:在容器启动后执行的命令及其参数。

常用选项

  1. -d, --detach:后台运行容器,并打印容器 ID。
  2. --name:为容器指定一个名称,方便后续操作。
  3. -p, --publish:发布容器的端口到宿主机上,格式为 宿主机端口:容器端口
  4. -v, --volume:挂载宿主机的目录或文件到容器内。
  5. --rm:容器退出时自动清理容器文件系统。
  6. -e, --env:设置环境变量。
  7. --restart:设置容器的重启策略,如 alwayson-failureunless-stopped

示例

假设你想运行一个 ubuntu 服务器:

docker run -d --name my-ubuntu -p 8080:80 ubuntu

这个命令将:

  • 在后台启动一个新的容器。
  • 将容器命名为 my-ubuntu
  • 将容器的 80 端口映射到宿主机的 8080 端口。
  • 使用 ubuntu 镜像。

注意事项!!!

  • 端口冲突:确保映射到宿主机的端口未被其他应用占用。如果容器启动后,修改端口会非常麻烦!
  • 挂载:如果容器内的数据是重要的,应该通过 -v 选项挂载数据卷或绑定宿主目录,以防容器删除后数据丢失。挂载非常重要!每一个容器都应该有一个挂载路径,方便与容器进行数据交互!下面给出一个挂载的例子

假设你正在开发一个 Web 应用,你的 HTML 和 JavaScript 文件存放在宿主机的 /path/to/webapp 目录中。你想要将这个目录挂载到运行 ubuntu 服务器的容器中,以便容器可以直接使用这些文件。

docker run -d \--name my-ubuntu \-v /path/to/webapp:/usr/share/ubuntu/html \-p 8080:80 \ubuntu

这个命令做了以下几件事:

  • -d 使容器在后台运行。
  • --name my-ubuntu 将容器命名为 my-ubuntu
  • -v /path/to/webapp:/usr/share/ubuntu/html 将宿主机的 /path/to/webapp 目录挂载到容器的 /usr/share/ubuntu/html 目录。这意味着容器中 ubuntu 服务默认的 Web 根目录现在指向你的本地开发目录,任何更改都会立即反映在通过 ubuntu 提供的网页上。
  • -p 8080:80 将容器的 80 端口映射到宿主机的 8080 端口,使你可以通过 http://localhost:8080 访问你的 Web 应用。

2.1、让docker容器使用宿主机显卡

步骤1:检查驱动

首先使用nvidia-smi检查宿主机是否能正常使用显卡

步骤2:安装nvidia-container-toolkit

安装nvidia容器工具包(nvidia-container-toolkit),需要这个工具才能让docker支持nvidia的GPU

如果你使用的是ubuntu可以使用以下命令安装

# 添加安装包存储库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list# 安装NVIDIA-DOCKER2软件包,然后重新加载Docker守护程序配置
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

更详细步骤可以参考官方链接

步骤3:运行支持GPU的容器

安装完 NVIDIA Docker 后,可以通过 --gpus 标志来启动支持 GPU 的容器。例如,如果想运行一个支持GPU使用的ubuntu容器,可以使用以下命令:

docker run --gpus all ubuntu

3、容器内的conda环境安装

进入容器内部后,安装conda环境,有conda和miniconda两个选项

  • conda: 如果你不能明确你的环境要求,建议安装conda,因为里面会预装好常用包,但是会很大很重
  • miniconda: 轻量,如果你明确你需要的库,那么miniconda是最好的选择

这里以安装miniconda为例:

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

在安装好后,更新资源

source ~/miniconda3/bin/activate

在所有可用的shell中初始化conda

conda init --all

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

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

相关文章

JS学习日记(jQuery库)

前言 今天先更新jQuery库的介绍,它是一个用来帮助快速开发的工具 介绍 jQuery是一个快速,小型且功能丰富的JavaScript库,jQuery设计宗旨是“write less,do more”,即倡导写更少的代码,做更多的事&#xf…

排序算法(基础)大全

一、排序算法的作用: 排序算法的主要作用是将一组数据按照特定的顺序进行排列,使得数据更加有序和有组织。 1. 查找效率:通过将数据进行排序,可以提高查找算法的效率。在有序的数据中,可以使用更加高效的查找算法&…

动手学深度学习73 课程总结和进阶学习

1. 课程总结和进阶学习 https://c.d2l.ai/stanford-cs329p/ https://paperswithcode.com https://www.bilibili.com/video/BV1nA41157y4/?vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 怎么建立知识库 2. QA 20 算法提取的特征和人的不一样,互补 21 很难预测未…

WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇(本文) WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

【弱监督视频异常检测】2024-ESWA-基于扩散的弱监督视频异常检测常态预训练

2024-ESWA-Diffusion-based normality pre-training for weakly supervised video anomaly detection 基于扩散的弱监督视频异常检测常态预训练摘要1. 引言2. 相关工作3. 方法论3.1. 使用扩散自动编码器进行常态学习3.2. 全局-局部特征编码器3.2.1 局部块3.2.2 全局块3.2.3 协同…

ONLYOFFICE8.2版本测评,团队协作的办公软件

文章目录 引言ONLYOFFICE产品简介功能与特点1. 实时协作2. 兼容性3. 模板库4. 评论和修订5. 安全性 体验与测评功能测试 邀请用户使用项目介绍结尾了解更多 引言 在数字化办公的浪潮中,效率和协作成为了工作的核心。ONLYOFFICE作为一个强大的办公套件,正…

Day18 Nim游戏

你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数&#xff…

【论文复现】STM32设计的物联网智能鱼缸

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀STM32设计的物联网智能鱼缸 【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成 1.2 设计思路【1】整体设计思路【2】ESP8266工作模式…

3D意识(3D Awareness)浅析

一、简介 3D意识(3D Awareness)主要是指视觉基础模型(visual foundation models)对于3D结构的意识或感知能力,即这些模型在处理2D图像时是否能够理解和表示出图像中物体或场景的3D结构,其具体体现在编码场景…

day-83 最少翻转次数使二进制矩阵回文 II

思路 关键在于1的个数要为4的倍数,首先镜像的四个位置肯定一定为4的倍数,如果行和列为奇数则需要单独考虑,如果行和列皆为奇数,那么中心的那个数一定为0 解题过程 再单独考虑如果行和列为奇数,具体参考灵神。如果diff…

算法沉淀一:双指针

目录 前言: 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言: 此章节介绍一些算法,主要从leetcode上的题来讲解&#xff…

《InsCode AI IDE:编程新时代的引领者》

《InsCode AI IDE:编程新时代的引领者》 一、InsCode AI IDE 的诞生与亮相二、独特功能与优势(一)智能编程体验(二)多语言支持与功能迭代 三、实际应用与案例(一)游戏开发案例(二&am…

GitLab 如何降级?

本分分享 GitLab 降级的流程和注意事项。极狐GitLab 为 GitLab 的中文发行版,本文以私有化部署的极狐GitLab 为例来演示整个过程。 【极狐GitLab 推出 GitLab 老旧版本的专业升级服务【https://dl.gitlab.cn/cm33bsfv】,可以让 12.x、13.x、14.x、15.x …

【动手学电机驱动】 STM32-FOC(7)MCSDK Pilot 上位机控制与调试

STM32-FOC(1)STM32 电机控制的软件开发环境 STM32-FOC(2)STM32 导入和创建项目 STM32-FOC(3)STM32 三路互补 PWM 输出 STM32-FOC(4)IHM03 电机控制套件介绍 STM32-FOC(5&…

IDEA2024:右下角显示内存

使用场景: 实时知晓idea内存使用情况 解决方案: 开启内存显示 View -> Apperance -> Status Bar Widgets -> Memory Indicator 效果如下:

2024140读书笔记|《作家榜名著:生如夏花·泰戈尔经典诗选》——你从世界的生命的溪流浮泛而下,终于停泊在我的心头

2024140读书笔记|《作家榜名著:生如夏花泰戈尔经典诗选》——你从世界的生命的溪流浮泛而下,终于停泊在我的心头 《作家榜名著:生如夏花泰戈尔经典诗选》[印]泰戈尔,郑振铎译,泰戈尔的诗有的清丽,有的童真&…

c# 调用c++ 的dll 出现找不到函数入口点

今天在调用一个设备的dll文件时遇到了一点波折,因为多c 不熟悉,调用过程张出现了找不到函数入口点,一般我们使用c# 调用c 文件,还是比较简单。 [DllImport("AtnDll2.dll",CharSet CharSet.Ansi)]public static extern …

Python_爬虫3_Requests库网络爬虫实战(5个实例)

目录 实例1:京东商品页面的爬取 实例2:亚马逊商品页面的爬取 实例3:百度360搜索关键词提交 实例4:网络图片的爬取和存储 实例5:IP地址归地的自动查询 实例1:京东商品页面的爬取 import requests url …

WebSocket协议在Java中的整合

1. 常见的消息推送方式 2.WebSocket API 3.基于WebSocket的实战(实时聊天室) 这里以解析后端代码为主,前端不作为重点,若想复现项目,请从作者的仓库中拉取代码 WebSocket-chatRoom: 基于WebSocket协议实现一个简单的…

蓝桥杯每日真题 - 第15天

题目:(钟表) 题目描述(13届 C&C B组B题) 解题思路: 理解钟表指针的运动: 秒针每分钟转一圈,即每秒转6度。 分针每小时转一圈,即每分钟转6度。 时针每12小时转一圈…