参考与前言

  1. Docker 官方教程 【英文】:https://docs.docker.com/get-started/
  2. Windows Docker 安装 | 菜鸟教程 (runoob.com)
  3. Docker 教程 | 菜鸟教程

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。

Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。

因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。

如需要在ubuntu下使用 像绝哥说的 用多了就是几条指令 非常快速的… 这个为走捷径教程,建议通过目录进行所需的观看

常用命令

  1. 查看已有镜像 image

    docker images
    
  2. 删除对应镜像id的镜像

    docker rmi image_id
    
  3. 查看已有容器 containers

    docker ps -a
    
  4. 删除对应容器id的容器

    docker rm container_id
    
  5. 删除所有无名

    sudo docker rmi $(sudo docker images -q --filter "dangling=true")
    

如果想一次過將所有 container 停止及刪除, 執行以下指令:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

0. 安装

docker

可以科学上网情况下:

Install Docker Engine on Ubuntu

  • docker engine

    sudo apt-get update
    sudo apt-get install \ca-certificates \curl \gnupg \lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    

国内镜像一键安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

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
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

1. 基础介绍

Docker 包括三个基本概念:

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

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

镜像 → 类;容器 → 对象

运行与参数

docker run -it ubuntu /bin/bashdocker run -it -e DISPLAY=$DISPLAY --net=host --gpus all \
--name kin_carla2 carlasim/carla:0.9.10.1 /bin/bashdocker run -it --gpus '"device=1,2"' \
-v /data_shared/Docker/jcheng/workspace:/workspace \
-p 8010:6006 \
--name cj_01 cj/torch:1.10.0-cuda11.3-cudnn8-runtime /bin/zsh

参数说明: