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)    收藏  举报

导航