docker使用入门简介

一、什么是docker?

https://www.docker.com/resources/what-container

使用docker时有两个重要概念,一个是镜像(images),一个是容器(containers)

  1. 镜像就是从docker hub或者自己制作好的一个包,类似压缩包
  2. 容器,就是将镜像run起来后的一个虚拟环境

二、为什么使用docker?

对于我们来说,环境独立且相对轻量,互不影响,后台运行。

三、怎么使用docker?

介绍几个常用命令,方便使用

  1. 首先要知道的是docker运行需要在sudo条件下
# docker版本可以通过运行下述命令完成
sudo docker version
  1. 通过下述命令来查看host拉好的docker镜像
sudo docker images
  1. 这些镜像只是一些包,为了使用这些镜像,需要将镜像转换为容器,拿镜像tensorflow/tensorflow:1.13.1-gpu-py3来说,运行下述命令可以将镜像转为容器(docker 19后的版本使用gpu不需要用nvidia-docker命令了,只需要加上--gpu即可)
sudo docker run -it -p 8080:80 --privileged=true -v /data/share/:/data/share --gpus all --name liuheng_test tensorflow/tensorflow:1.13.1-gpu-py3 /bin/bash

关于怎么使用命令,可以通过docker --help和docker run --help来查看

参数的解释:
1. 上述-it其实是-i 和-t,-i表示要开一个交互式的容器,-t表示开一个伪终端,所以这两经常一起使用
2. -p表示端口映射,前面表示host端口后面表示容器中的端口,上面就是说将容器中的80端口映射到host中的8080端口
3. --privileged,设置为True表示容器内的root有root权限,否则没有,默认没有
4. -v 表示将host中的目录挂载到容器中,为了方面上面取了同样的名字,跑起代码来就不用修改路径了,其中冒号前的表示host中的目录,冒号后面表示容器中的目录,容器中的目录自动创建。还要说明的是-v可以多次使用,也就是可以挂载多个目录
5. --gpus,指定使用哪些gpu,all表示容器可以看见所有gpu
6. --name 表示指定容器名字
7. tensorflow/tensorflow:1.13.1-gpu-py3表示run哪个镜像
8. 最后表示载入容器的bash
  1. 第一次运行的话就可以进入容器了,像一个新的linux环境,输入exit或者ctrl+d,退出容器,退出的同时容器停止run,里面的程序,比如训练程序也会挂。如果想后台运行执行ctrl+p和ctrl+q,这样容器后台运行,训练进程不会挂
  2. 退出后,如果想在次进入容器有下面方式
    如果是exit方式退出的,那么容器停止运行了,想要进入容器需要先启动容器
1. sudo docker start containerID
2. sudo docker attach containerID # 进入容器

如果是退出后,容器仍然运行(即采用ctrl+p和ctrl+q方式退出容器)直接采用attach命令即可重新进入容器
  1. 查看所有容器
sudo docker ps -a 

四、哪里下载容器?

官方的dockerhub已提供很多可以直接使用的docker环境,地址:https://hub.docker.com/

五、关于打包镜像

  1. 将容器保存为镜像
sudo docker commit containerID pytorch1.5 #(pytorch1.5为将打包成的镜像名)
该命令详细使用可以查看sudo docker commit --help
  1. 将打包好的镜像保存成tar文件
sudo docker save pytorch1.5 > pytorch1.5.tar
  1. 将tar文件载入为镜像
sudo docker load < pytorch1.5.tar

掌握上述命名就可以快速上手使用docker了,有其他疑问或者描述纰漏可以留言交流

你可能感兴趣的:(docker使用入门简介)