目录
进阶操作一:
数据卷
理解: 数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
自己理解: 数据备份 共享 快捷方式 复用
注意: 宿主机与容器内数据同步(删除或添加) 但是只有容器被删除的时候数据卷数据不会删除
基础指令:
查看数据卷 docker volume ls
创建数据卷 docker volume create ***(名字)
删除数据卷 docker volume rm ***(名字)
-> 容器的挂载没删除 需要先删除容器 然后在删除数据卷
删除无主的数据卷: docker volume prune
查看docker 数据卷信息 docker volume inspect ***(名字)
注意: Mountpoint 是挂载点 与容器 挂载 路径一直
实战操作: 数据卷 挂载点
自己理解: 宿主机上创建快捷方式 (容器内的 相当于安装路径) 安装在D盘 结果在C盘桌面打开软件
但是 算是备份(即使容器删除 数据卷内数据也不会被删除)
1: 创建数据卷
docker volume create container-vol #创建数据卷
docker volume ls #查看数据卷列表
docker volume inspect container-vol #查看Mountpoint 挂载点
2. 启动容器并挂载数据卷
写法一:
docker run -it -v container-vol:/pzyzx centos:8 bash
-> 详细解释:
docker 容器运行 bash交互 把container-vol数据卷 挂载到 在centos:8 的 pzyzx 文件夹中
这个文件夹与这个挂载container-vol的挂载点路径相对应 挂载点===镜像内pzyzx 这俩相通
类似网盘()
写法二(上面是简化操作):
docker run -it --mount source=container-vol,target=/pzyzx centos:8 bash
3. 添加文件测试
cd pzyzx # 进入pzyzx
touch hello.java # vi/vim(需要在容器中下载,其他容器依旧无法使用) 创建 一个文件 hello.java
3.1 退出容器 在宿主机挂载点中找到这个文件
docker volume inspect container-vol
3.2 进入这个目录
注意: 小坑 需要重新进入这个文件夹 不然ls查不出来
只要容器运行 将这个数据卷挂载到指定目录 就会在容器的指定目录中查看到
docker run -it -v container-vol:/newpzy centos:8 bash 然后进入newpzy依旧会看到hello.java
补充: 直接目录挂载
缺点 : 目录太多 不容易控制管理(不受docker虚拟化引擎管理) 不能docker volume ls
优点: 简洁...快速
docker run -it -v /usr/local/src/docker:/pzyzx centos:8 bash
cd /usr/local/src/docker/
ls
docker ps -a
docker inspect 3fc
查看容器信息
docker ps -a
docker container inspect ***(containerID) #查看容器详情 container可以省略
注意: 几个docker使用小细节
1. 容器与容器 等效于进程与进程 是 相互隔离 采用 namespace 文件系统隔离 (使用group)
之前弄得nacos命名空间 组 极其相似
2. 容器内的centos8 仅仅是一套文件系统 内核使用的依旧是宿主机的内核, vim等资源是无法使用的, 可以下载 但是其他容器依旧无法使用
3. 两个服务 都使用80端口 可是linux只能启动一个 使用docker容器 隔离
4. 不同服务都需要对一个usr文件进行操作(数据不同步) 使用容器 隔离 自己操作自己的