docker pull

Pull

项目image一般从一个纯净的环境开始. 例如我们开发一个python后台服务, 可以从纯净的python环境开始:

docker pull python

又或我现在需要创建一个虚拟环境运行深度学习模型, 需要一个装有tensorflow包的python环境:

docker pull tensorflow/tensorflow

这里的tensorflow/tensorflow, 第一个tensorflow指的是用户名, 第二个tensorflow是image的名字. 使用上面这个命令行, 得到是装有最新CPU版本tensorflow的环境, 其实等同于:

docker pull tensorflow/tensorflow:latest

latest是这个image的一个标签(tag), latest常作为默认的标签, 如果pull时不指定标签, 得到的就是这个标签对应的image.

一个image可以包含多个标签, 这点类似于git中的分枝(branch). 例如我们想使用最新GPU版本的tensorflow, 就需要使用下面的tag:

docker pull tensorflow/tensorflow:latest-gpu

如果要使用1.14GPU版本的tensorflow:

docker pull tensorflow/tensorflow:1.14.0-gpu-py3

格式

总结上面各种pull的例子, docker pull命令的格式如下:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

其中镜像名称部分可以总结为:

docker pull <hub-user>/<repo-name>[:<tag>]

结合docker pull tensorflow/tensorflow:latest-gpu理解.

OPTIONS中常用的有:

  • -a: 拉取所有 tagged 镜像

  • --disable-content-trust: 忽略镜像的校验, 默认开启

总结

以tensorflow为例, 可以使用docker pull拉取不同tag的镜像, 就可以做到CPU/GPU, 多版本的共存. 如果有使用多版本tensorflow的需要, 这样的做法就避免了环境的冲突.

参考

最后更新于