docker常用命令

概述

在我的深度学习开发相关工作中,使用docker非常多。有cpu版本的docker也有GPU版本的docker。我可以把很多依赖的软件打包到docker里交给现场运行,这样现场就免去了繁杂的环境配置过程。

在此记录一下常用的docker命令。

搜索和下载镜像

去年阿里有一个可以搜索docker镜像的网站,今年则访问不了了。所以现在只能在https://hub.docker.com查询相关镜像。

其实在命令行里也可以搜索相关docker镜像,比如搜索tensorflow相关的镜像:

$ docker search tensorflow
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tensorflow/tensorflow                Official Docker images for the machine lea...   1429                 
jupyter/tensorflow-notebook          Jupyter Notebook Scientific Python Stack w...   145                  
tensorflow/serving                   Official images for TensorFlow Serving (ht...   58                   
xblaster/tensorflow-jupyter          Dockerized Jupyter with tensorflow              52                   [OK]
rocm/tensorflow                      Tensorflow with ROCm backend support            22                   
floydhub/tensorflow                  tensorflow                                      18                   [OK]
bitnami/tensorflow-serving           Bitnami Docker Image for TensorFlow Serving     13                   [OK]

比如我觉得第一个镜像不错,然后就可以拉到本地来:

docker pull tensorflow/tensorflow:TAG

注意把上面的TAG换成需要的版本号,如果没有冒号和冒号后面的内容,默认拉取tag为latest的版本,也就是最新版本。

查看镜像和容器

镜像和容器的关系就像程序和进程的关系,一个表示磁盘上的实例,一个表示内存中的实例。

查看docker镜像:

$ docker images
REPOSITORY                                                  TAG                            IMAGE ID            CREATED             SIZE

ub1604_py3_opencv_dlib_tf1.7_flask                          20190425                       7735ef5663e3        6 weeks ago         1.58GB
py3_cpu                                                     0424                           dd33f7482bb9        6 weeks ago         1.79GB
tf1.7_cuda9_zj20190404                                      latest                         2db530c66dd3        2 months ago        6.46GB

查看容器:

$ docker ps
CONTAINER ID        IMAGE                                                                   COMMAND                  CREATED             STATUS              PORTS                                            NAMES
d88abf4e8181        registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.6.0-gpu-py3   "/bin/bash"              4 hours ago         Up 4 hours                                                           face_seg_cy
7b969c58646d        py3_cpu:0424                                                            "/app/bin/start.sh"      8 days ago          Up 4 hours          0.0.0.0:38240->8240/tcp                          py3_cpu_tdxbqs_bridge
21c385b452af        ub1604_py3_opencv_dlib:20180508                                         "/bin/bash"              3 weeks ago         Up 4 hours                                                           adress_matching
e1a41db18177        registry.cn-hangzhou.aliyuncs.com/denverdino/tensorflow:1.6.0-gpu-py3   "/run_jupyter.sh -..."   2 months ago        Up 3 hours                                                           face_tf1.6_yll

有时停电了,所有的容器都停了,其实这些容器还可以恢复的,可以用“docker ps -a”查看被停止的容器,然后用“docker start NAME”的方式重启。

删除容器和删除镜像

删除分两步,先停止,然后删除(停止后还可以用start重新起来的,就是一个暂停的意思)

# docker stop NAME
# docker rm NAME

删除镜像一步就行:

docker rmi IMG_NAME:TAG

打包和载入

比如我在家里的基础容器内安装了需要的环境,为了交给现场,我需要打包成的镜像:

docker commit 容器名称 NEW_NAME:NEW_TAG

上一步把容器变成了镜像,接着需要把镜像变成一个单独的文件包:

docker save NEW_NAME:NEW_TAG > NAME.tar

上面的NEW_NAME和NEW_TAG、NAME需要自己指定的。

现在我把NAME.tar交给现场部署的人员,他需要把tar包载入到docker程序中:

docker load < NAME.tar

然后用“docker images”就可以看到载入的镜像了。这个方法载入的镜像和“docker pull”下载的镜像是等价的。

启动一个容器

前面唠了那么久,还没开始启动一个容器。启动容器的前提是有镜像,怎么下载和载入镜像前面也都说了。

启动一个容器:

docker run --net=host -dit -v /home/yuanlulu/share4docker:/home/user --name yll_test IMG_NAME:IMG_TAG

上述命令把主机目录/home/yuanlulu/share4docker挂载到容器的/home/user目录下,容器名字为yll_test,启动这个容器的镜像在最后面指定。如果启动的是GPU版本的镜像,需要用nvidia-docker而不是docker。

实际上docker可以对容器的cpu、内存及网络等资源做出配置,可以非常灵活配置各种资源。我就不一一讲了。

启动容器后就可以进入容器内进行各种骚操作了:

docker exec -it yll_test bash

这样就好进入容器的命令行,退出用exit命令。

总结

上面就是我个人常用的命令。真的感觉非常方便。

参考资料

菜鸟docker教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值