Docker学习笔记

目录

Docker架构:

Docker安装:

Docker镜像获取:

Docker指令:


Docker架构:

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker安装:

参照官网:

Installation Guide — container-toolkit 1.13.5 documentation
或者菜鸟教程:

Docker 容器使用 | 菜鸟教程

Docker镜像获取:

TensorRT镜像获取:

(镜像内封装了TensortRT、CUDA、CudaNN等)

TensorRT | NVIDIA NGC

TensorRT Container Release Notes

Release Notes :: NVIDIA Deep Learning TensorRT Documentation

Docker私有库

参考以下文章,使用内网仓库的会用到:

Docker入门:私有库(Docker Registry)简介及使用方法(防踩坑)-CSDN博客

Docker指令:

*查看已有镜像:

docker images 

*列出容器:

docker ps -a

*删除已有的容器和镜像:

docker rm 容器ID

docker image rm 镜像ID

*查看容器路径:

docker inspect --format='{{.GraphDriver.Data.MergedDir}}' <container_name_or_id>

*开启Docker容器:
docker start <容器ID/容器名称>
*停止Docker容器:

docker stop <容器ID/容器名称>

*进入Docker容器:

docker exec -it <容器ID> /bin/bash

*打包容器为镜像:

#使用命令前确保需要打包的容器处于停止状态

sudo docker commit <容器ID或名称> <新镜像名称>:<标签>

*将镜像保存为tar文件:

#使用sudo nautilus命令修改一下生成的tar文件权限

sudo docker save -o <镜像名称>.tar <镜像ID/镜像名称>

*加载tar镜像

docker load -i container.tar

*指定镜像创建容器

如果没有此镜像,将会自动下载。

docker run:创建一个新的容器并运行一个命令

--rm 表示创建完容器之后会自动删除。

--name 表示为容器指定一个名称。

--runtime=nvidia: 这个选项告诉Docker使用NVIDIA Container Runtime来管理GPU资源。

--gpus all: 这个选项告诉Docker将所有可用的GPU都分配给容器

nvidia/cuda:11.6.2-base-ubuntu20.04: 这是要运行的Docker映像的名称和标签。在这种情况下,它是一个基于Ubuntu 20.04的CUDA映像,版本为11.6.2。

nvidia-smi: 这是在容器中运行的命令,它会显示NVIDIA GPU的状态和使用情况。

sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

*从镜像仓库中拉取或者更新指定镜像

镜像名称是ubuntu,标签是18.04。

docker pull ubuntu:18.04

然后可以使用以下命令使用上面拉取的镜像创建一个容器。
-t: 用于为构建的镜像指定标签。

-it: 这两个选项结合在一起,表示在容器内启动一个交互式会话。这将允许您与容器进行交互,类似于在终端中运行一个命令行界面。

/bin/bash: 这是在容器内执行的命令。在这种情况下,它是/bin/bash,它将启动一个Bash Shell会话,允许您在容器内执行命令和操作。

docker run -it --name wzq --gpus all 镜像ID /bin/bash

*利用dockerfile搭建docker镜像并用此镜像创建容器

1.需要创建一个dockerfile文件,里面添加自己的内容。运行以下命令来构建docker镜像:

docker build -t trt_starter:cuda11.4-cudnn8-tensorrt8.2_${1} .

  • docker build: 这是 Docker 命令的一部分,用于构建 Docker 镜像。

  • -t trt_starter:cuda11.4-cudnn8-tensorrt8.2_${1}-t 选项用于为构建的镜像指定标签。在这种情况下,镜像的名称是 "trt_starter",标签是 "cuda11.4-cudnn8-tensorrt8.2_${1}"。${1} 是一个占位符,表示在构建命令中传递的参数。

  • .: 这是构建上下文路径。Docker 将在当前目录中查找 Dockerfile 和相关的文件来构建镜像。

创建容器:

docker run -it --name trt_starter_${1} --gpus all -v /home/jiqiang/Code:/home/jiqiang/Code -p 8090:22 -e DISPLAY=:1 trt_starter:cuda11.4-cudnn8-tensorrt8.2_${1} bash

  • /home/jiqiang/Code:/home/jiqiang/Code: 这个选项用于将宿主机的 X11 UNIX 套接字目录 (/tmp/.X11-unix) 挂载到容器的相同路径,以实现图形界面的显示。相当于一个卷轴。

  • -p 8090:22: 这个选项将容器的 SSH 服务端口 (22) 映射到宿主机的端口 8090,以便可以通过 SSH 连接到容器。

  • -e DISPLAY=:1: 这个选项用于设置容器内的 DISPLAY 环境变量,以指定 X11 服务器的地址和显示号码。

  • fish: 这是在容器内执行的命令。在这种情况下,它是 bash,它会在容器内启动 bash Shell。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jiqiang_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值