文章目录
docker的定义和特点
Docker是一个基于go语言的开源应用容器,可将应用的源代码与它的依赖都打包在Docker镜像中。
与虚拟机不同的是虚拟机隔离的是用户之间的整体环境,而Docker用于分离应用之间的环境,它的启动时间比虚拟机要快上许多。
特点
- 启动速度快
- 资源利用率高
- 性能开销小
基本概念
通过与java相关概念对比的方式理解镜像和容器
- | - | - |
---|---|---|
Java | 类 | 实例 |
Docker | 镜像 | 容器 |
Dockers镜像就像是java的一个静止类,每一个容器就是根据某一个类新建的实体
镜像images
Docker镜像加速
因为原生的镜像下载速度非常的慢,所以要配置镜像加速器
$sudo vim /etc/docker/daemon.json
注意要求原文复制以下内容,不要多空格逗号之类的,否则会出现Docker重启失败的错误
{
"registry-mirrors": ["https:/s/docker.mirrors.ustc.edu.cn"]
}
重新启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
查看当前本地已有的镜像
$docker images
提交生成新的镜像
$docker commit container_id imageid:tag
删除某镜像
$ docker rmi -f REPOSITORY-name
-f表示强制删除,因为删除时可能会有一些未被删除的容器导致不能删除
容器container
查看当前正在运行的容器
$ sudo docker ps
需要查看包括运行和停止的容器
$ sudo docker ps -a
启动Docker 镜像
$sudo run -it docker
启动GPU环境docker
命令行: docker run -it --gpus all image-id
pytorch测试是否能够使用NVIDIA显卡代码
import torch
torch.cuda.is_available()
进入后台运行的容器
docker exec -it container-id /bin/bash
从这个方式退出不会导致容器停止
映射外部地址至容器(调用外部数据)
docker run -it --rm -v $(realpath /home/test):/workspace imageId:Tag
括号里的是外部即本机地址,冒号后的是容器内的地址
删除容器
- 删除指定容器
docker rm -f container-id
- 删除所有终止状态的容器
docker container prune
查看某容器的错误日志
docker logs container-id
命令start和run 的区别
- start:打开之前被关闭的容器
- run:开启一个新的容器,如果要求的镜像不存在,会直接默认下载
docker 镜像版本区别
- runtime的包,没有cuda的编译工具nvcc
- devel的,是有cuda的nvcc包的
参考资料
- Docker 教程 https://www.runoob.com/docker/docker-tutorial.html