Docker一些常用命令记录

查看镜像构建历史
docker history xxxxx
搜索centos6.5的镜像
docker search centos6.5 
拉取到本地 这里用了hasedon/centos6.5
docker pull hasedon/centos6.5
使用该镜像运行一个容器
docker run -i -t -d 镜像名/ID
命令行模式进入改容器,或者执行某些shell命令
docker exec -it 容器ID /bin/bash
Docker 使用著名的 top 命令作为子命令的名称,来查看容器产生的进程。它采用容器的名称或 ID 作为参数.
docker top containerID
容器内外数据共享、拷贝,挂载共享目录到镜像中,运行容器
docker run -it -v ~/Downloads/:/home/ hasedon/centos6.5 /bin/bash
导出该镜像
docker export containerid > new_img.tar
导入镜像
docker import - xxx < new_img.tar
运行一个容器
docker run -it -d -p xx:80 —-name 
提交容器到镜像
docker commit containerid foo/live
导出容器镜像到文件
docker export containerid > new_img.tar
根据导入的文件创建一个新的镜像
docker import - new_img_name < new_img.tar
从容器内拷贝文件到主机上,主机上拷贝到容器中
docker cp <containerId>:/file/path/within/container /host/path/target  
docker cp /host/path/target  <containerId>:/file/path/within/container 
用输入输出符
docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/  
Docker 容器内外拷贝数据,docker可以支持把一个宿主机上的目录挂载到镜像里。
#通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
#默认挂载的路径权限为读写。如果指定为只读可以用:ro
docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash
docker还提供了一种高级的用法。叫数据卷。
#数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。看示例:
docker run -v /home/dock/Downloads:/usr/Downloads  --name dataVol ubuntu64 /bin/bash
#创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。
#再创建一个新的容器,来使用这个数据卷。
docker run -it --volumes-from dataVol ubuntu64 /bin/bash
--volumes-from用来指定要从哪个数据卷来挂载数据。
直接在主机上拷贝到容器物理存储系统,MAC上貌似不能这么操作。
$ docker ps  

CONTAINER ID      IMAGE    COMMAND       CREATED      STATUS       PORTS        NAMES    
d8e703d7e303   solidleon/ssh:latest      /usr/sbin/sshd -D                      cranky_pare  
 $ docker inspect -f   '{{.Id}}' cranky_pare  
	or   
 $ docker inspect -f   '{{.Id}}' d8e703d7e303  
d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5  
$ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5