1、使用感受

        docker在https://hub.docker.com/search/?q=SSD%20caffe&type=image搜索想要的caffe 网站的每个项目称之为镜像,我们从这些页面中下载自己需要的镜像,例如我需要一个caffe的镜像,就在里面搜索caffe,然后使用后面对应的命名即可下载,十分方便。下载到我们的电脑后还不能使用,这是我们要将镜像作为我们的容器运行,镜像可以变成多个容器,每个rong容器的名称不一样就可以,例图1所示,使用docker images 就可以查看本地镜像详情。使用命令:docker ps 可以查看正在运行的容器,如图二所示,通过一个镜像创建出了三个容器。容器之间彼此互不干扰。这使用起来十分方便,一般需要的内容容器内都会有,省心。

docker 发音 docker 使用教程_重启

                                                                                    图1

docker 发音 docker 使用教程_docker 发音_02

                                                                                  图二

2、具体使用方法

2.1 搜索docker镜像(镜像地址docker

docker 发音 docker 使用教程_进入容器_03

2.2 下载镜像

找到合适的点击进入详情,然后找到tags,tags表示支持的版本,一般分为CPU和GPU,然后点击右侧的拷贝按键,最后在服务器中输入该命令,就可以下载镜像了

docker 发音 docker 使用教程_docker 发音_04

备注:由于国内镜像限速,所以一般使用中科院镜像或者阿里云镜像资源,其中阿里云镜像有个人专属的申请链接,现附上中科大的连接

将下面的连接通过命令添加至deamon文件中

sudo vim  /etc/docker/daemon.json
#第一个大括号是镜像加速作用,这里可以写多个镜像,我写了一个阿里的还有一个网易的。dns是因为docker服务器是谷歌的所以要修改这个dns服务器的地址进行解析路径
{
                  "registry-mirrors":["https://vkdp4xz9.mirror.aliyuncs.com","http://hub-mirror.c.163.com"],
                  "dns":["8.8.8.8","8.8.4.4"]
}

#第二个大括号是起到NVIDIA容器注册作用
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

修改完成后重启docker,输入以下命令

sudo systemctl daemon-reload
sudo systemctl restart docker

 重启之后就可以快速下载了:

docker 发音 docker 使用教程_docker 发音_05

备注:重启完之后可能docker的容器全都停止了,这时候需要恢复容器输入以下命令查看并恢复

 

#容器查询
docker container ls -a
#容器恢复
docker ps -aq | xargs -I {} docker start {}

若出现以下错误: 

docker ps -aq | xargs -I {} docker start {}

参考这部分注册信息即可 https://github.com/nvidia/nvidia-container-runtime#docker-engine-setup

docker 发音 docker 使用教程_docker 发音_06

最后全部恢复正常

docker 发音 docker 使用教程_进入容器_07

3、运行docker下载的镜像

  输入以下命令运行下载的镜像

nvidia-docker run --name xxx -it -v xxx:xxx  bvlc/caffe:gpu /bin/bash

上述命令中的--name xxx中的xxx表示创建容器的名称;后面的xxx:xxx  第一个xxx表示将本地的哪个路径作为容器的映射地址,比如完整的命令如下, 

nvidia-docker run --name lct -it -v /home/p100-2 /licaffe2:/licaffe2  bvlc/caffe:gpu /bin/bash

/home/p100-2 /licaffe2能够和容器进行交互,将内容拷贝到 /home/p100-2 /licaffe2路径下就可以在容器中以/licaffe2  路径出现。

 

创建完成后我们就可以使用一些命令了如下:

#进入容器:
  sudo  docker  attach  lct
#重启容器:
  sudo docker restart lct
# 一般来说需要先删除容器,然后再删除镜像
#删除容器  
   sudo docker rm 容器ID或者容器名,删除已经停止运行的实例。如果没有停止,使用docker stop ID/NAMES停止实例,或者使用docker rm -f 容器ID或者容器名强制删除。
#删除镜像 命令中的ID使用过 docker images查询到的
   docker rmi -f ID

还可以查看本地的GPU使用情况

nvidia-smi

docker 发音 docker 使用教程_进入容器_08

 

2.5 其他命令

1. 使用docker run创建docker容器,(docker命令都是以docker开头的)安装完docker后,大多数情况下,本机上面一般没有docker镜像的,执行docker run的时候一般先查看本地镜像,如果本地没有,则会自动去Docker Hub上下载镜像。Docker的域名解析服务器是google的,因此需要将8.8.8.8和8.8.4.4的DNS服务器IP添加到域名系统中去。Ubuntu下的操作是打开/etc/resolv.conf,添加两行nameserver 8.8.8.8和nameserver 8.8.4.4。
 
2. 接下来使用命令docker run -i -t 镜像名字 /bin/bash创建一个容器,比如
    docker -i -t ubuntu /bin/bash,其中使用-t参数是指定一个交互是命令行,
    执行这个命令,如果本地有镜像,则用本地镜像创建一个容器,如果没有则会去docker hub下载镜像,下载时间可能有点长。
    命令执行完毕后,会创建启动一个容器,并进入容器内部的shell中。在这个容器里面和普通的Linux操作完全一样。
 
3. 容器常用的管理命令
    docker run 创建并启动一个容器,在run后面加上-d参数,则会创建一个守护式容器在后台运行。
    docker ps -a 查看已经创建的容器
    docker ps -s 查看已经启动的容器
    docker start con_name 启动容器名为con_name的容器
    docker stop con_name 停止容器名为con_name的容器
    docker rm con_name 删除容器名为con_name的容器
    docker rename old_name new_name 重命名一个容器
    docker attach con_name 将终端附着到正在运行的容器名为con_name的容器的终端上面去,前提是创建该容器时指定了相应的sh
执行这个命令后,按下回车键,会进入容器的命令行Shell中。
    docker logs con_name 获取容器名为con_name的容器日志
    docker inspect 查看容器的详细信息
    docker top con_name 查看容器名为con_name的容器内部的进程
    docker exec 可以用来在容器中运行一个进程
总结:docker的管理命令都是以docker开头,加上一个容易理解的单词,对一个命令的参数不熟悉,可以使用docker command --help查看相关参数意义