(九)Docker数据管理
Docker数据管理,即Docker内部以及容器之间管理数据,主要有两种方式:数据卷和挂载。
1. 数据卷(Volume)
volume,可供一个或多个容器使用的特殊目录。
- 数据卷可在容器之间共享和重用;
- 对数据卷的修改会立马生效;
- 对数据卷的更新,不会影响镜像;
- 数据卷默认会一直存在,即使容器被删除;(可通过
docker volume prune
命令删除无效的volume)
数据卷的使用,类似于Linux下对目录或文件进行mount操作,镜像中被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。
docker volume
命令
-bash-4.2# docker volume --help
Usage: docker volume COMMAND
Manage volumes
Options:
--help Print usage
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused volumes
rm Remove one or more volumes
Run 'docker volume COMMAND --help' for more information on a command.
2. 挂载主机目录(Bind mounts)
错误的挂载
-bash-4.2# docker run -it --rm -p 1992:80 --name mynginx -v ./:/usr/local/nginx/html mynginx:v1.0.0
docker: Error response from daemon: create ./: "./" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intented to pass a host directory, use absolute path.
See 'docker run --help'.
正确的挂载
-bash-4.2# pwd
/home/yvhqbat/docker/nginx_docker
-bash-4.2# docker run -it --rm -p 1992:80 --name mynginx -v /home/yvhqbat/docker/nginx_docker:/usr/local/nginx/html mynginx:v1.0.0
一个容器的启动脚本,可以写出如下 start.sh:
#!/bin/bash
docker stop mynginx
#docker image rm mynginx:v1.0.0
#docker image load -i mynginx.tar
WORKDIR=`pwd`
docker run -dit --rm -p 1992:80 --name mynginx -v $WORKDIR:/usr/local/nginx/html mynginx:v1.0.0