参考与前言
- Docker 官方教程 【英文】:https://docs.docker.com/get-started/
- Windows Docker 安装 | 菜鸟教程 (runoob.com)
- Docker 教程 | 菜鸟教程
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
如需要在ubuntu下使用 像绝哥说的 用多了就是几条指令 非常快速的... 这个为走捷径教程,建议通过目录进行所需的观看
常用命令
-
查看已有镜像 image
docker images
-
删除对应镜像id的镜像
docker rmi image_id
-
查看已有容器 containers
docker ps -a
-
删除对应容器id的容器
docker rm container_id
-
删除所有无名
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
可以畅通网络的情况下 [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/bash
docker run -it -e DISPLAY=$DISPLAY --net=host --gpus all \
--name kin_carla2 carlasim/carla:0.9.10.1 /bin/bash
docker 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
参数说明:
-
i: 交互式操作。
-
t: 终端。
-
ubuntu: ubuntu 镜像名称
-
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash,比如最后一条使用的是bin/zsh 也就是zsh Shell
-
--gpus all
,也可以指定此容器可使用的gpu数量和设备,如果是数量的话 直接后接数字即可,如果是设备的话 如上 指标设备id,相关官方链接 -
--name kin_carla2
指明这个容器的名字,没有的话就是随机命名,有名字的话后面 docker start 可以直接接名字 省事 -
-p
的意思是把contrainer的端口映射到host上,例如-p 8010:6006
的意思是把容器中6006端口映射到host的8010端口上