目录
Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub 公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。
获取镜像:docker pull NAME[:TAG]
- 使用命令: docker pull NAME[:TAG] 如果不显示的指定 TAG,则会默认选择 latest 标签,即现在仓库中最新版本的镜像。
- 下面演示了获取一个最新的 ufoym/deepo 镜像,由于没有指定标签,所以默认下载最新的镜像 ufoym/deepo:latest。下载过程中可以看出,镜像文件一般有若干层组成,行首的 898c46f3b1a1 这样的字符串代表了各层的ID。下载过程中会获取并输出镜像的各层信息。层(layer)其实是AUFS(Advanced Union File System,一种联合文件系统)中的重要概念,是实现增量保存与更新的基础。
![]()
图1
- 比如下载指定版本的Ubuntu系统镜像文件,(14.04标签的镜像)
- sudo docker pull ubuntu:14.04
- 下载镜像到本地后,即可随时使用该镜像了。例如,利用该镜像创建一个容器,在其中运行 bash 应用。
如下图所示
- sudo nvidia-docker run -it ufoym/deepo bash
- -i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
查看镜像信息: sudo docker images
- sudo docker images 列出本地主机上已有的镜像。
搜索镜像:docker search
删除镜像:docker rmi
-
使用镜像的标签删除镜像
例如删除 标签为 8.0-devel 的 nvidia/cuda 镜像,但是标签为 latest 的nvidia/cuda 的镜像则还在,这个删除命令只会删除指定标签的镜像文件。
-
使用镜像ID删除标签:
创建镜像
方法有三种:
- 基于已有镜像的容器创建,
- 基于本地模板导入
- 基于dockerfile创建。(这种方法后续补充)
存出和载入镜像:
上传镜像: