docker六:数据卷管理
数据卷(文件或目录)
- -v /data
- -v src(宿主机的目录):dst(容器的目录)
数据卷容器:--volumes-from
示例一:
以nginx为例:/usr/share/nginx/html(容器的目录)
docker run -d -p 80:80 -v /opt/myproject:/usr/share/nginx/html nginx:latest
查看最后一个启动的容器:
docker ps -a -l
进入容器:
docker exec -it 容器的id或名字 /bin/bash
修改宿主机的文件,或修改容器目录中的文件,都是同步的,它们只是映射。
示例二:
81端口映射到web1站点,80映射到nginx默认首页
创建web1站点的nginx配置文件:/opt/web1.conf
server { root /opt; listen 81; }
清除所有容器:
docker rm -f `docker ps -a -q`
启动docker容器:用-p指定两次端口,同时用-v指定两次挂载,挂载web1站点在内容和配置文件
docker run -d -p 80:80 -p 81:81 -v /opt/web1.conf:/etc/nginx/conf.d/web1.conf -v /opt/web1:/opt nginx:latest
容器中的数据,随着容器的销毁而销毁。
怎么持久化容器中的数据?在宿主机上,创建数据卷
# docker volume Usage: docker volume COMMAND Manage volumes Commands: create Create a volume inspect Display detailed information on one or more volumes ls List volumes prune Remove all unused local volumes rm Remove one or more volumes Run 'docker volume COMMAND --help' for more information on a command.
# docker volume create 容器卷名称
查看容器卷列表:
# docker volume ls
使用容器卷,创建一个容器
# docker run -d -p 82:80 -v myvol:/usr/share/nginx/html nginx:latest
查看最后一个容器
# docker ps -a -l
进入容器:
# docker exec -it a435b12d4dca /bin/bash
# cd /usr/share/nginx/html/
修改容器中的数据:
# echo 'abcdefasdf'>index.html
测试,访问该 站点:http://192.168.1.12:82/
可以看到内容修改成功
退出容器:
exit
删除上面创建的容器:
# docker rm -f a435b12d4dca
如果没有使用容器卷,删除以上容器后,容器中的数据也将随之删除。
使用以上容器卷,再创建一个容器,查看之前容器中的数据是否还存在
# docker run -d -p 83:80 -v myvol:/usr/share/nginx/html nginx:latest
访问http://192.168.1.12:83/,可以看到之前容器修改的内容。这就可以持久化容器中的数据。
查看容器卷的详细信息:
# docker volume inspect myvol [ { "CreatedAt": "2019-08-06T00:12:20+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/myvol/_data", "Name": "myvol", "Options": {}, "Scope": "local" } ]
/var/lib/docker/volumes/myvol/_data目录,就是容器卷myvol存放的数据
# cd /var/lib/docker/volumes/myvol/_data # cat /var/lib/docker/volumes/myvol/_data/index.html
使用--volumes-from,即使用上一个容器卷
posted on 2019-08-05 16:29 myworldworld 阅读(133) 评论(0) 收藏 举报