ubuntu docker学习笔记

把数据保存到本地,有以下两种方式:

1.volumes数据卷

# 创建一个卷
docker volume create my_volume

# 运行容器并挂载卷
docker run -d --name my_container -v my_volume:/app/data my_image

2.bind mounts挂载

与volume不同的是,绑定挂载直接使用宿主机文件系统中的路径(需要给出绝对路径)

docker run -d --name my_container -v /host/path:/container/path my_image

多阶段构建镜像

参考:https://www.orchome.com/8191

多阶段构建可以由多个 FROM 指令识别,每一个 FROM 语句表示一个新的构建阶段,阶段名称可以用 AS 参数指定


构建的容器占内存太多

解决办法:

  1. 用dockerfile构建
  2. 尽量使用官方给的镜像,而不是自己从头开始构建

基于官方的ubuntu20.04镜像,然后自己手动装了ros,cuda,cudnn之后,生成的镜像竟然就达到了16.8GB

想着能不能直接用nvidia官方的cuda镜像呢?在https://hub.docker.com/r/nvidia/cuda/tags?page=1&page_size=&name=11.8&ordering=里可以找到nvidia/cuda的镜像,然后根据tags搜索自己想要的cuda版本,比如说11.8。

发现了我想要的ubuntu20.04+cuda11.8+cudnn8的镜像,但是有两个版本,一个是runtime,另一个是devel,体积比runtime大了不少。

区别:

  • devel 镜像:适用于开发和编译 CUDA 应用程序。
  • runtime 镜像:适用于运行已编译的 CUDA 应用程序。

 一开始不懂,就下了更小的runtime版本,但是从镜像创建出容器,使用nvcc --version指令会报错找不到nvcc,但还是不死心,又试着装了openpose库,在cmake的时候报错找不到cuda,这才重新下载devel版本。

不知道为啥官网4.99G,但下载下来有9.7G

创建容器:

docker run -it --gpus all --privileged=true -v /dev/:/dev/ -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -w /workspace nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04 /bin/bash

验证一下cuda版本:

运行以下指令验证cudnn版本:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

找不到这个文件,不过没关系,用ls /usr/lib/x86_64-linux-gnu | grep cudnn指令找到了libcudnn,说明cudnn库是安装好了的

ls /usr/lib/x86_64-linux-gnu | grep cudnn

 

在openpose的cmake中,也一切正常

感觉用官方的cuda镜像,在镜像大小上面没有比自己手动安装小多少,不过比较省事,直接拉取就可以了

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一种开源的容器化平台,它可以让开发者将应用程序及其依赖项打包到一个可移植的容器中,然后在任何支持 Docker 的平台上运行这些容器。本文将介绍 Docker 基础知识和使用方法。 ## 安装 Docker Docker 官方提供了不同平台的安装包,可以在官网上选择对应平台的安装包进行下载。安装完成后,可以在命令行中输入 `docker version` 命令来验证 Docker 是否安装成功。 ## 镜像和容器 Docker 的核心概念是镜像和容器。镜像是一个只读的模板,它包含了运行应用程序所需的所有信息,如代码、运行时环境、库文件、环境变量等。容器则是从镜像启动的运行实例,它可以被启动、停止、删除,并且可以与其他容器进行通信。 ### 镜像 Docker 镜像可以使用 `docker pull` 命令从 Docker Hub 上下载,也可以使用 `docker build` 命令从 Dockerfile 中构建。一个 Dockerfile 是一个包含构建 Docker 镜像所需的指令的文本文件。 例如,下面是一个构建一个基于 Ubuntu 操作系统的 Docker 镜像的 Dockerfile: ``` # 使用 Ubuntu 作为基础镜像 FROM ubuntu:latest # 设置镜像的作者 MAINTAINER yourname # 更新 Ubuntu 系统 RUN apt-get update # 安装必要的软件 RUN apt-get install -y nginx # 复制本地文件到镜像中 COPY index.html /var/www/html/ # 暴露容器端口 EXPOSE 80 # 设置容器启动命令 CMD ["nginx", "-g", "daemon off;"] ``` 使用 `docker build` 命令来构建 Docker 镜像: ``` $ docker build -t myimage . ``` ### 容器 使用 `docker run` 命令可以启动一个容器。例如,启动上面构建的 `myimage` 镜像: ``` $ docker run -d -p 8080:80 myimage ``` 其中 `-d` 表示在后台运行容器,`-p` 表示将容器的端口映射到主机的端口,`myimage` 是要启动的镜像名称。 使用 `docker ps` 命令可以查看当前正在运行的容器。使用 `docker stop` 命令可以停止容器。 ## Docker Compose Docker Compose 是一个工具,它可以定义和运行多个 Docker 容器。它使用 YAML 文件来配置应用程序的服务。例如,下面是一个简单的 Docker Compose 配置文件: ``` version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" ``` 使用 `docker-compose up` 命令可以启动这个应用程序。使用 `docker-compose down` 命令可以停止应用程序并删除容器。 ## 总结 本文介绍了 Docker 的基础知识和使用方法,包括镜像、容器和 Docker Compose。希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值