docker经常使用命令的使用

1. docker ps : 显示目前的容器信息html

CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS                NAMES
c0d9faf72e77        tensorflow/tensorflow:latest   "/run_jupyter.sh"   About an hour ago   Up About an hour    6006/tcp, 8888/tcp   berserk_meitner
9310baeaef6a        tensorflow/tensorflow:latest   "/run_jupyter.sh"   About an hour ago   Up About an hour    6006/tcp, 8888/tcp   condescending_engelbart
b15bca9de3b2        tensorflow/tensorflow:latest   "/run_jupyter.sh"   2 hours ago         Up 2 hours          6006/tcp, 8888/tcp   tender_ritchie


查看容器(ps) # 列出当前全部正在运行的container $docker ps # 列出全部的container $docker ps -a # 列出最近一次启动的container $docker ps -l

2. docker images :  显示目前的镜像信息

REPOSITORY              TAG                 IMAGE ID            CREATED
    VIRTUAL SIZE
tensorflow/tensorflow   latest              05a46e5af4d3        2 weeks ago
    1.028 GB
hello-world             latest              7a5a2d73abce        9 weeks ago
    1.84 kB

3. docker exec -it    容器ID bash :进入容器里面, 必须service docker start 启动服务,否则docker ps看不到容器ID

如: docker exec -it 9310baeaef6a bash  //在容器9310baeaef6a中建立一个新的bash会话
git

备注:docker

1. docker exec -it9e3a1deed8fc bash : 报错 ]FATA[0000] Error response from daemon: Container 9e3a1deed8fc is not running,docker ps看不到有运行的容器,须要docker start9e3a1deed8fc启动容器


ubuntu

4. ctrl+d 退出容器且关闭, docker ps 查看无

   
ctrl+p+q 退出容器但不关闭, docker ps 查看有
bash


刚才本身测试了,没发现有啥不一样服务器


5. 挂载tcp

docker run -it -v /root/project/facenet-master:/var/lib/docker/volumes  tensorflow/tensorflow  /bin/bash

                                                                                                                                      挂载名字                     交互式须要加
测试

好比:ui

docker run -it -v /root/project:/opt tensorflow/tensorflow /bin/bash

/root/project : 我之后将全部的工程都放到该目录下,因此挂载一个大点的目录;
spa

/opt: 能够在该目录下看到你挂载的文件或者目录;

tensorflow/tensorflow:  是docker pull tensorflow/tensorflow时 的镜像名字


如:在镜像中新建一个容器

nvidia-docker run -d -p 1006:6006 -p 1881:8888 -v /dataTwo/datasets:/notebooks --name str_synthText --restart=always -e PASSWORD=a1b2c3 gds/keras-th-tf-opencv 
 GPU可跑                                      改             改                                 路径             挂载路径                           容器名字                                                                                             镜像名字  

6. 删除容器

docker rm 容器ID

-f  是强行删除,

删除容器就将挂载的东西也删除了


7. docker run -it ubuntu bash  

这句命令就是运行一个Ubuntu容器,只要这一句命令Docker就自动会从Docker hub上下载最新的Ubuntu镜像到本地而且运行。然而,因为Docker的服务器在大洋彼岸,下载起来确实是比较慢,后面的文字会分享如何使用国内的镜像服务器进行下载。


8.在容器中安装新的

docker run tensorflow/tensorflow apt-get install -y ping

目标:

tensorflow/tensorflow镜像里面安装ping程序。

提示:

在执行apt-get 命令的时候,要带上-y参数。若是不指定-y参数的话,apt-get命令会进入交互模式,须要用户输入命令来进行确认,但在docker环境中是没法响应这种交互的。

或者 (提倡该方法)

先进入容器,在安装ubuntu下面的方法安装软件,若是是源码安装,则须要将源码放到挂载的路径下进入安装。

或者 (写dockerfile文件安装软件,目前还不会)


9. 保存对容器的修改

当你对某一个容器作了修改以后(经过在容器中运行某一个命令),能够把对容器的修改保存下来,这样下次能够从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

目标:

首先使用docker ps -l命令得到安装完ping命令以后容器的id。而后把这个镜像保存为learn/ping。

提示:

1. 运行docker commit,能够查看该命令的参数列表。

2. 你须要指定要提交保存容器的ID。(译者按:经过docker ps -l 命令得到)

3. 无需拷贝完整的id,一般来说最开始的三至四个字母便可区分。(译者按:很是相似git里面的版本号)

正确的命令:

$docker commit 698 learn/ping

docker images 能够看到多了一个镜像,容器是镜像的实例,因此保存对容器的修改其实就是保存镜像。

           

10. docker pull 镜像

存放在/var/lib/docker/



备注:

1.进入容器后,就没法使用docker命令;

2.cv  file.tar   里面没有以前挂载的源文件,须要本身拷贝到里面


参考文献:

http://www.tuicool.com/articles/7V7vYn (很全的命令)

http://blog.csdn.net/kunloz520/article/category/6430551 (一系列)

http://blog.sina.com.cn/s/blog_72ef7bea0102vvu3.html(拉下来得镜像存放)