Docker命令解读-四

title: Docker命令解读(四)
date: 2015-11-23 10:04:19
tags: docker

categories: Docker Commands

Docker命令解读系列文章将系统讲解Docker使用的命令,方便大家学习Docker的基本操作。在写这个系列文章的时候,主要参考了Docker官方的文档,有些内容是直接的翻译。原文档地址 Docker Docs
转载请注明出处

本篇的命令大都与文件相关。
目录:
* cp
* diff

cp

Usage:  docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
    docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH

Copy files/folders between a container and the local filesystem
Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

  --help=false       Print usage

Usage的第一行是将容器中的文件或目录拷贝到宿主机上;第二行是将宿主机上的文件或目录拷贝到容器中的某个文件夹中。
对正在运行的或已经停止的容器都可以执行cp命令,PATH可以是一个目录,也可以是文件。Docker默认container:PATH指向的文件或文件夹是相对于/根目录的,也就是说,PATH最前面的/是可选的。
如果LOCALPATH是相对地址,则它是相对于当前工作目录的。
关于拷贝的文件的权限,分两种情况:
- 从宿主机拷贝到容器:拷贝后文件的UIDGID都是root用户对应的ID。
- 从容器拷贝到宿主机:拷贝后文件的UID,和GID都是执行cp命令的用户的相应ID。

下面用SRC_PATH 表示源文件的位置,DST_PATH表示要拷贝到的位置,拷贝的结果有如下几种情况:
- SRC_PATH指向一个文件:
- DST_PATH指向的地址不存在:在DST_PATH指向的位置创建文件并保存;
- DST_PATH指向的地址不存在且以/结尾:报错,指定的目的文件夹必须存在;
- DST_PATH存在且是一个文件:DST_PATH指向的文件被SRC_PATH指向的文件的内容覆盖;
- DST_PATH存在且指向一个目录:文件被拷贝到目的文件夹中,且文件名不变。
- SRC_PATH指向一个目录:
- DST_PATH不存在:在DST_PATH位置创建文件夹并将SRC_PATH文件夹下的所有文件拷贝到创建的文件夹下;
- DST_PATH存在但是一个文件:报错,不能将文件夹拷贝为文件;
- DST_PATH存在且是一个文件夹:分两种情况:
- SRC_PATH没有以/.结尾:将SRC_PATH文件夹拷贝到DST_PATH文件夹下;
- SRC_PATH/.结尾:将SRC_PATH下的所有内容拷贝到DST_PATH文件夹下;

如果SRC_PATH指向一个符号链接,则拷贝的是符号链接而不是链接指向的文件。
一些系统文件如/proc/sysdev和容器中用户挂在的文件是不能拷贝的。

有一个特殊的符号-,用途比较特殊:
-作为第一个参数替代LOCALPATH时(上面Usage的第二行),会将一个打包后的文件写入STDIN并将其解压到容器中的目的文件夹内,此时PATH参数必须是一个文件夹。
-作为第二个参数替代LOCALPATH时(Usage的第二行),会将容器中的内容打包成tar并通过STDOUT输出。

diff

Usage: docker diff [OPTIONS] CONTAINER

Inspect changes on a container's filesystem

  --help=false        Print usage

列出容器中文件系统的变化,关于文件的三种操作会被列出:
- A - ADD 添加的文件
- D - Delete 删除的文件
- C - Change 改变的文件

示例:

$ docker diff 7bb0e258aefe

C /dev
A /dev/kmsg
C /etc
A /etc/mtab
A /go
A /go/src
A /go/src/github.com
A /go/src/github.com/docker
A /go/src/github.com/docker/docker
A /go/src/github.com/docker/docker/.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值