docker常用命令的使用

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

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会话

备注:

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


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

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


刚才自己测试了,没发现有啥不同


5. 挂载

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

                                                                                                                                      挂载名字                     交互式需要加

比如:

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

/root/project : 我以后将所有的工程都放到该目录下,所以挂载一个大点的目录;

/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(拉下来得镜像存放)


你可能感兴趣的:(docker)