docker启动训练容器教程

news2024/11/17 13:53:15

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.coloradmin.cn/o/2242201.html

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

相关文章

蓝桥杯-洛谷刷题-day3(C++)

目录 1.忽略回车的字符串输入 i.getline() ii.逐个字符的识别再输入 2.获取绝对值abs() 3.做题时的误区 4.多个变量的某一个到达判断条件 i.max() 5.[NOIP2016 提高组] 玩具谜题 i.代码 6.逻辑上的圆圈 i.有限个数n的数组 7.数组的定义 i.动态数组 1.忽略回车的字符串输…

Redis在高性能缓存中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Redis在高性能缓存中的应用 Redis在高性能缓存中的应用 Redis在高性能缓存中的应用 引言 Redis 概述 定义与原理 发展历程 Redi…

AOP实现上下游泳道隔离RPC调用

在平时代码项目代码测试的过程中,“隔离”思想就经常被用上,比方说多个并行开发的需求都需要用到服务 A 的能力,但是又需要同时部署 A 不同的代码分支,这个时候“泳道隔离”机制就显得尤为重要了。“泳道隔离”即将相同代码仓库的…

TCP/IP--Socket套接字--JAVA

一、概念 Socket套接字,是由系统提供⽤于⽹络通信的技术,是基于TCP/IP协议的⽹络通信的基本操作单元。 基于Socket套接字的⽹络程序开发就是⽹络编程。 二、分类 1.流套接字 使用传输层TCP协议。TCP协议特点:有链接、可靠传输、面向字节流…

号卡分销系统,号卡系统,物联网卡系统源码安装教程

号卡分销系统,号卡系统,物联网卡系统,,实现的高性能(PHP协程、PHP微服务)、高灵活性、前后端分离(后台),PHP 持久化框架,助力管理系统敏捷开发,长期持续更新中。 主要特性 基于Auth验证的权限…

平衡二叉搜索树之 红黑 树的模拟实现【C++】

文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步:按照二叉搜索树的方式插入新节点第二步&#x…

线性数据结构

数组 数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址。 数组…

GoFly框架使用vue flow流程图组件说明

Vue Flow组件库是个高度可定制化的流程图组件,可用于工作流设计、流程图及图表编辑器、系统架构展示。可以根据自己的需求,设计独特的节点和边,实现个性化的流程图展示。这不仅增强了应用的视觉效果,也使得用户交互更为直观和流畅…

MySQL数据库:SQL语言入门 【2】(学习笔记)

目录 2,DML —— 数据操作语言(Data Manipulation Language) (1)insert 增加 数据 (2)delete 删除 数据 truncate 删除表和数据,再创建一个新表 (3&#xf…

“南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战

目录 前言 一、关于岛屿的基点位置 1、领海基点 二、基点坐标的转换 1、最底层的左边转换 2、单个经纬度坐标点转换 3、完整的转换 三、基于天地图进行WebGIS展示 1、领海基点的可视化 2、重要城市距离计算 四、总结 前言 南海明珠黄岩岛,这座位于南海的…

19.UE5道具掉落

2-21 道具掉落,回血、回蓝、升级提升伤害_哔哩哔哩_bilibili 目录 1.道具的创建,道具功能的实现 2.随机掉落 1.道具的创建,道具功能的实现 新建Actor蓝图,并命名为道具总类,添加一个Niagara粒子组件和一个碰撞箱bo…

Cartographer激光雷达slam -20241116

Cartographer Cartographer代码结构 cartographer:负责处理来自雷达、IMU和里程计的数据并基于这些数据进行地图的构建,是cartographer理论的底层实现cartographer_ros:基于ros的通信机制获取传感器的数据并将它们转换成cartographer中定义…

node.js学习笔记-Window下MongoDB数据库安装(二)

一、介绍 MongoDB 是一个基于分布式文件存储的开源数据库系统,在当前的软件开发和数据存储领域中应用广泛,以下是对 MongoDB 的详细介绍: 文档型数据库:MongoDB 以 BSON(Binary JSON)格式存储数据&#x…

STM32G4的数模转换器(DAC)的应用

目录 概述 1 DAC模块介绍 2 STM32Cube配置参数 2.1 参数配置 2.2 项目架构 3 代码实现 3.1 接口函数 3.2 功能函数 3.3 波形源代码 4 DAC功能测试 4.1 测试方法介绍 4.2 波形测试 概述 本文主要介绍如何使用STM32G4的DAC模块功能,笔者使用STM32Cube工具…

【论文复现】轻松利用自适应特征融合实现去雾

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 智慧医疗 介绍创新点网络结构特征提取阶段自适应融合阶段图像重建阶段上下文增强模块CEM特征融合模块AFM 结果分析 提示 论文题目&#xff1…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC(精简指令集)MCU的SOC芯片,用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统? 无钥匙进入系统具有无钥匙进入并且启动的功能,英文名称是PKE&…

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题(1)什么是进程间通信&…

计算机网络各层设备总结归纳(更新ing)

计算机网络按照OSI(开放式系统互联)模型分为七层,每一层都有其特定的功能和对应的网络设备。以下是各层对应的设备: 1. 物理层(Physical Layer) 设备:中继器(Repeater)、集线器…

在kile 5中一个新工程的创建

这两天博主学习到了在kile5中创建一个工程,当然博主不会忘了小伙伴们的,这就和你们分享。 本次创建以STM32F103C8为例 创建过程: 1首先创建文件 名字随意,但也不要太随意,因为是外国软件,所以多少对中文…

AI写作(十)发展趋势与展望(10/10)

一、AI 写作的崛起之势 在当今科技飞速发展的时代,AI 写作如同一颗耀眼的新星,迅速崛起并在多个领域展现出强大的力量。 随着人工智能技术的不断进步,AI 写作在内容创作领域发挥着越来越重要的作用。据统计,目前已有众多企业开始…