目录
数据卷
创建一个数据卷
查看所有数据卷
查看指定数据卷的详细信息
启动容器的同时挂在数据卷
查看容器的信息
删除数据卷
在容器销毁时自动删除数据卷
挂载主机目录作为数据卷
挂载一个本地主机文件作为数据卷
数据卷
数据卷特性:
1.可以在容器之间共享和重用
2.对数据卷的修改立马生效
3.对数据卷的更新,不会影响镜像
4.数据卷默认一直存在,即使容器被删除
*注意: 数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的 数据卷
创建一个数据卷
docker volume create 数据卷名称
查看所有数据卷
$ docker volume ls
查看指定数据卷的详细信息
$ docker volume inspect 数据卷名称
启动容器的同时挂在数据卷
使用docker run命令的同时用--mount参数来指定数据卷,一次可以挂载多个数据卷
$ docker run -d -P \
--name web \
--mount source=my-vol,target=/webapp \
training/webapp \
python app.py
-d 在后台运行,并返回容器ID
-P 映射容器端口
--name 容器名称
--mount source=挂载卷名称,target=容器里面的挂载点
training/webapp 容器镜像
python app.py 命令【具体我也不是很清楚】
查看容器的信息
$ docker inspect 【容器名称|容器ID|。。。。】
删除数据卷
$ docker volume rm 【数据卷名称】
在容器销毁时自动删除数据卷
docker rm -v
在删除容器的时候加上-v ,因为数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后
自动删除 数据卷 ,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷
也可以用
$ docker volume prune
批量删除无主数据卷
【这里的my-vol还在使用中所以不会被删除】
挂载主机目录作为数据卷
$ docker run -d -P \
--name web \
# -v /src/webapp:/opt/webapp \
--mount type=bind,source=/src/webapp,target=/opt/webapp \
training/webapp \
python app.py
将主机的/src/webapp目录挂载到容器的/opt/webapp目录(数据的存储会相互影响),本地路径要是绝对路径。
以前使用 -v 参数时如果本地目录不存在 Docker 会自动为你创建一个文件夹,现在使用 --mount 参数时如果本地目录不存在,Docker 会报错。
挂载主机目录默认是读写权限,可以在后面指定readonly 指定为可读
$ docker run -d -P \
--name web \
# -v /src/webapp:/opt/webapp:ro \
--mount type=bind,source=/src/webapp,target=/opt/webapp,readonly \
training/webapp \
python app.py
挂载一个本地主机文件作为数据卷
$ docker run --rm -it \
# -v $HOME/.bash_history:/root/.bash_history \
--mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
ubuntu:17.10 \
bash
root@2affd44b4667:/# history
1 ls
2 diskutil list
这样就可以记录在容器输入过的命令了。