仓库 数据卷迁移
我用的是daocloud的加速器 免费注册的
docker login daocloud.io
账号:密码 登录即可
docker search mysql
可以搜索库内关于 mysql的镜像
docker pull mysql
将远端库内的mysql镜像加载到本地的库中 默认的tag 是latest
docker tag test/ubuntu:v1.0 ubuntu:12.08
更改本地镜像库的的tag和repository test/ubuntu:v1.0(要更改的目标) ubuntu:12.08(更改后的结果)他们共享一个ID
创建私有仓库没懂,回头再看
数据管理 在使用docker的过程中,需要查看容器内的英语产生的数据,或者需要备份数据,再或者多个容器的数据共享。这必然涉及书籍管理
数据卷 是一个可供容器使用的特殊目录,特点
多个容器可以共享,数据卷的修改可以立马生效,数据卷更新不影响容器,卷会一直存在直到没有容器再使用
创建一个数据卷
如下为容器添加一个数据卷,并将容器名改为data。这个数据卷在容器里的目录是
/opt/data
[root@localhost ~]
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io
/ubuntu
latest 0ef2e08ed3fa 2 weeks ago 130 MB
[root@localhost ~]
# docker run --name data -v /opt/data -t -i docker.io/ubuntu /bin/bash
root@2b9aebcf6ce8:/
# cd /opt/data/
root@2b9aebcf6ce8:
/opt/data
# ls
root@2b9aebcf6ce8:
/opt/data
# echo "123" > 123
root@2b9aebcf6ce8:
/opt/data
# echo "123123" > 123123
root@2b9aebcf6ce8:
/opt/data
# ls
123 123123
[root@localhost volumes]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b9aebcf6ce8 docker.io
/ubuntu
"/bin/bash"
49 seconds ago Up 48 seconds data
在宿主机上,查看对应上面的那个数据卷的目录路径:
[root@localhost ~]
# docker inspect data|grep /var/lib/docker/volumes
"Source"
:
"/var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data"
,
[root@localhost ~]
# ls /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data
123 123123
[root@localhost ~]
# echo "asdhfjashdfjk" >> /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data/123
[root@localhost ~]
#
root@2b9aebcf6ce8:
/opt/data
# ls
123 123123
root@2b9aebcf6ce8:
/opt/data
# cat 123
123
asdhfjashdfj
创建一个数据卷容器dbdata
docker run -it -v /dbdata --name dbdata ubuntu
这条命令的意思是将数据卷挂载到 ubuntu容器内的/dbdata目录下
docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu
将dbdata数据卷共享于三个容器 一个内容改变其他的也将改变 ,数据同步
数据备份
docker run --rm --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/dbdata.tar /dbdata
启动一个新的容器并且从dbdata
容器中挂载卷,然后挂载当前目录到容器中为backup,并备份dbdata
卷中所有的数据为dbdata
.
tar
,执行完成之后删除容器--
rm
,此时备份就在当前的目录下,名为dbdata
.
tar
。
注意:后面的
/test
是数据卷的目录路径(即数据卷创建时在容器里的路径)
为了利用数据卷容器备份,使用--volumes-from标记来创建一个加载wang容器卷的容器,并从主机挂载当前目录到容器的
/backup
目录。并备份wang卷中的数据,执行完成之后删除容器--
rm
,此时备份就在当前的目录下了。
先创建一个容器,并挂载要备份的容器数据卷,再挂载数据卷(
pwd
):
/backup
目录到容器
/bakcup
,在容器中执行备份
/data
目录到
/backup
,也就是备份到宿主机$(
pwd
):
/backup
目录。