docker 挂载卷,必会的docker数据管理(三)

目录

回顾

命令回顾

卷挂载

方式一:-v 命令

方式二:复制容器的文件

1. 启动容器,先不挂载

2. docker cp 把运行中的 nginx 的内容复制出来

方式三:匿名挂载

第四种方式:具名挂载(推荐)

volume 维护卷

具名挂载实例

结语:


回顾

首先我们要安装 镜像 /【容器】,到 docker hub 的官网下载 (https://hub.docker.com/search?q=redis&type=image)。

命令回顾

# 启动 docker

systemctl  start  docker

# 查看 docker 状态

systemctl  status docker

#  停止 docker 

systemctl  stop  docker 

# 查看、启动、停止容器

docker ps -a   或  docker ps

docker start 容器id / 容器名

docker stop 容器id / 容器名

# 批量启动、停止、删除容器

docker start $(docker ps -aq)

docker stop $(docker ps -aq)

docker rm $(docker ps -aq)

# 启动一个容器(第一次运行)

docker  run  -d  --name  [自定义名]  -p  宿主机IP(Linux暴露外部的IP):容器IP  [镜像id / 镜像名:[tag] ] 

例如: docker run --name my-redis -p 6379:6379 -d redis:6.0  。 如果没有镜像会到 docker  hub 自动下载。

卷挂载

前言:假设我要修改容器中的配置,每次都得进入容器后台找到配置目录进行修改,这样非常的麻烦,所以这个时候就需要把容器中的配置挂载到外部 linux 环境。

方式一:-v 命令

# 将主机操作系统目录直接映射进容器

docker run --name mynginx -p 80:80 -v /usr/local/etc/nginx:/usr/share/nginx/html -d daee903b4e43

# --name:给容器自定义名称

# -p:端口暴露给外网

# -v:卷挂载, linux 目录:容器目录,需要注意的是,linux 目录无需到html 层。

 

挂载之后发现并不能访问 index.html,原因是 -v 挂载,会把容器中的内容清空,因为外部 linux 环境的目录是空的,所以映射给容器时,就清空了。

这个时候需要自己手动添加 html 页面,vi index.html,编写内容如下: 

 

docker inspect 容器ID /  容器名

# 查看资源详细信息。Binds 是容器挂载的路径。

  • 这种挂载方式并不推荐

 

方式二:复制容器的文件

1. 启动容器,先不挂载

例如: docker run -d --name my-nginx -p 88:80 daee903b4e43

# 命令语法:docker run -d --name [自定义名] -p 宿主机IP(Linux暴露外部的IP):容器IP [镜像id / 镜像名:[tag] ]

2. docker cp 把运行中的 nginx 的内容复制出来

[root@localhost ~]# docker cp --help

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

 访问成功,访问的是默认首页。 如果用 -v 命令,挂载的目录是没有任何文件的,而且容器中的文件也会被清空。但这种方式也不是最优方式。

 

方式三:匿名挂载

docker run -d -p 80:80 --name mynginx \
-v /usr/share/nginx/html \
-v /etc/nginx \
daee903b4e43

# 斜杠:换行作用。匿名挂载的缺点是不好维护

docker ps

# 查看运行中的容器

docker inspect 912247bf4258

# 命令语法:docker inspect 资源ID / 资源名称,资源可以是镜像,也可以是容器。意思是查看资源的详细信息。下面我们查看容器挂载的路径在哪。

第四种方式:具名挂载(推荐)

volume 维护卷

volume 常用命令

docker volume --help  :帮助命令

docker volume ls  :查看挂载名列表

docker volume create  :创建

docker volume inspect  :查看信息,例如 docker volume inspect 3ecc56524f6972fde27d4e819b76fd806b8ec1e1db8b87a42210a2823182a917

docker volume rm / prune  :移除

# 以上命令自己去尝试,在此省略。

  • docker volume create 挂载名
    创建具名挂载,例如:docker volume create nginx-conf 。
    可以省略,挂载时必须命名。

  • docker volume inspect 挂载名
    查看挂载信息,例如:docker volume inspect nginx-conf

具名挂载实例

docker run -d -P --name mynginx \
-v nginx-conf:/etc/nginx \
-v nginx-html:/usr/share/nginx/html \
daee903b4e43

# -v 挂载名: 容器路径

docker inspect 容器ID / 容器名:查看挂载信息。 

 

 

结语:

至此,docker 挂载的内容全部介绍完了,多复习研究,官网也是介绍了一下。如果对你有帮助,欢迎留言讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值