(九)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
posted @ 2018-09-02 16:36  yvhqbat  阅读(911)  评论(0编辑  收藏  举报