docker的cp不适用于这个MySQL容器
试图复制一个目录,它似乎并没有工作。
启动一个msyql容器。
docker cp mysql:/var/lib/mysql . cd mysql ls
没有。
这里是自己尝试的脚本。
http://goo.gl/nIMZJd
额外的信息。
在Ubuntu 14.04上
jc @ dev:〜/ work / jenkins / copy-sql / mysql $ docker -v Docker版本1.2.0,build fa7b24f
在容器来源的映像的Dockerfile中,有VOLUME指令告诉Docker将/var/lib/mysql
目录从容器文件系统中移出 。
docker cp只能访问容器文件系统,因此不会看到安装卷中的文件。
如果你需要备份你的mysql数据,我build议你按照Docker用户指南中的说明备份,还原或迁移数据卷 。 你也可能会发现discordianfish / docker-backup docker镜像对于这个任务很有用。
这里有一个小例子来说明你的情况。
- 给一个简单的Dockerfile只有
VOLUME
指令
$ cat Dockerfile FROM base VOLUME /data
-
build立一个名为
test
的图像$ docker build --force-rm -t test .
-
运行一个名为
container_1
,该container_1
将创build两个文件,一个位于已安装的卷上$ docker run -d --name container_1 test bash -c 'echo foo > /data/foo.txt; echo bar > /tmp/bar.txt; while true; do sleep 1; done'
-
确保容器正在运行
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e97aa18ac83 test:latest "bash -c 'echo foo > 3 seconds ago Up 2 seconds container_1
- 使用
docker cp
命令将cp文件/tmp/bar.txt
并检查其内容
$ docker cp container_1:/tmp/bar.txt . $ cat bar.txt bar
- 尝试与安装卷中的文件相同(不起作用)
$ docker cp container_1:/data/foo.txt . 2014/09/27 00:03:43 Error response from daemon: Could not find the file /data/foo.txt in container container_1
- 现在运行第二个容器来打印出该文件的内容
$ docker run --rm --volumes-from container_1 base cat /data/foo.txt foo
它看起来像你试图将你的容器的name
传递给docker cp
命令。 文档说它需要一个容器ID。 而不是尝试在脚本中查找“容器标识”。
编辑 :
由于将脚本更改为容器ID的grep没有帮助,因此应该先手动(在脚本之外)尝试此操作。
docker cp命令起作用。 它不适合你的原因是:
- 一个许可的事情
- 你没有正确地格式化命令,或者
- 该目录不存在于您的容器中。
使用正在运行的容器标识号XXXX,试试这个(使用你的容器ID):
sudo docker cp XXXX:/var/lib/mysql .
如果这不起作用,你没有得到一个错误,我可能会build议该目录不存在于你的容器。
EDIT2:
正如我所说,这是以上三件事之一。 我运行你的脚本时得到这个:
2014/09/26 16:10:18 lchown mysql: operation not permitted
将脚本的最后一行改为sudo
前缀现在不会出现错误,但是也不会有目录。
交互式运行容器:
docker run -t -i mysql /bin/bash
一旦进入容器:
cd /var/lib/mysql ls
…没有文件。
所以你的脚本工作正常。 该目录只是空的(基本上#3) 。
作为参考,mysql的Dockerfile在这里 。
- Dockerfile – Angular2
- apachectl -DFOREGROUND立即退出
- 使用docker在Ubuntu上安装Mono的最新版本
- Docker不能在Jenkins从站远程构build。 这是什么原因?
- 为了开发目的,需要“app / dist”作为卷的一部分时,不能在容器中生成“app / dist”
- Docker-client Java API:服务器无法响应有效的HTTP响应
- docker:未能注册图层:re-exec错误:退出状态1:输出:ProcessBaseLayer。 该系统找不到指定的path
- Kubernetes(本地Docker方法)真的有用吗?
- Docker映像初始文件系统从哪里来?