Ubuntu Docker Cuda 环境安装记录

REF:

1. 安装 docker

1.1 安装

  • **apt **
sudo apt update
sudo apt-get install docker.io
  • 安装包安装
wget -qO- https://get.docker.com/ | sh

1.2. 更新dockers 用户组

sudo gpasswd -a ${USER} docker
newgrp docker

1.3. 测试dockers 是否安装成功

# common cmd to test docker
docker images          # 查看当前下载的images
docker version
docker container ls    # 查看当前正在运行的container
docker container ls -a # 查看所有的container
docker run hello-world
(base) XXX@XXXX-pc:~$ docker container ls -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
e535113fa206   hello-world   "/hello"   5 minutes ago   Exited (0) 5 minutes ago             elegant_swirles

1.4 设置开机自动启动

sudo systemctl start docker
sudo systemctl enable docker

2. 安装 Nvidia-docker

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

sudo apt-get update
sudo apt-get install -y nvidia-docker2

测试是否正确安装

 docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
(base) xxx@xxx-pc:~$ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Fri Mar  1 06:28:33 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.239.06   Driver Version: 470.239.06   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   31C    P8     9W / 170W |     45MiB / 12050MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

3. 常见dockers命令

DOCKER 常用命令+教程 中文

docker images 命令

  • 下载dockers images
    # docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    docker pull ubuntu:18.04
    
  • 通过 images 创建docker container
    docker run -it --rm ubuntu:18.04 bash
    
    • -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。
    • –rm:这个参数是说容器退出后随之将其删除。默认run 之后 dockers不会手动删除
    • bash:放在镜像名后的是 命令,
    • exit 退出当前 container
  • [TODO] 将当前 container 打包成一个 image

dokcer container 命令

- container 的 启动,停止和重启

[name] 是 CONTAINER ID 、NAMES 都是可以的

  • docker container start [name]
    • 启动已经终止(exited)的容器
  • docker container start [name]
    • 重启启动
  • docker container restart [name]
docker run 常用参数
arg说明
--name为容器指定一个名称
-it通过终端的方式交互
-p, --publish发布一个容器的端口到宿主机上
-v , --volume绑定挂载一个卷。
--gpus允许容器访问GPU。
进入正在运行的container
  • docker exec -it <container-id>
    $ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    69d137adef7a        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           zealous_swirles
    
    $ docker exec -it 69d1 bash
    root@69d137adef7a:/#
    

docker 中的数据管理

docker container 中有由 数据卷(Volumes) 和 **挂载主机目录(Bind mounts)**两种类型

  1. 挂在主机目录
    • -v: 一种简化的挂载方式, 只需提供源路径和目标路径即可

      docker run -v /host/path:/container/path my_image
      
    • --mount 更为灵活和强大的挂载方式,允许你指定多个选项。可以指定挂载的类型(volume、bind mount),源路径、目标路径,并且可以设置一些额外的选项,比如读写权限。

      docker run --mount type=bind,source=/host/path,target=/container/path,readonly my_image
      # --mount参数指定了一个绑定挂载,将主机的 /host/path 目录挂载到容器的 /container/path目录,并设置为只读。
      

docker 中 网络配置

TODO



update: 2024.06.25

走代理进行 docker pull/push

  • 使用国内镜像更新失效了,所以使用代理。
  • 终端配置好proxy 之后,docker 并不能直接proxy. 需要稍微设置一下。

REF:
1. 解决docker pull无法拉取镜像的问题(配置代理)
2. https://neucrack.com/p/286

  • docker pull 的代理被 systemd 接管,所以需要设置 systemd

    mkdir -p /etc/systemd/system/docker.service.d
    vim /etc/systemd/system/docker.service.d/proxy.conf
    
  • 添加以下内容,根据自己的proxy设置进行相应更改。

    [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:7890/"
    Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
    Environment="NO_PROXY=localhost"
    
  • 重启systemd和docker服务:

    systemctl daemon-reload
    systemctl restart docker
    
  • 查看是否添加完成

    systemctl show --property=Environment docker
    

docker build 代理

TODO

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值