Docker容器、数据卷和数据挂载

目录

修改容器文件内容

步骤一

步骤二

步骤三

效果

总结

Docker数据卷

容器与数据耦合的问题

数据卷

创建数据卷

创建数据卷

查看所有数据

查看数据卷详细信息卷

总结

Docker数据挂载

举例

案例

总结

创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

数据卷挂载的方式对比

总结


修改容器文件内容

步骤一

进入容器。进入我们创建的的nginx容器的命令为:

docker exec -it mn bash 

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

步骤二

进入nginx的HTML所在目录 /usr/share/nginx/html

cd /usr/share/nginx/html

步骤三

修改index.html的内容

sed -i 's#Welcome to nginx#厚积薄发#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

效果

总结

  • 查看容器状态:
    • docker ps
    • 添加-a参数查看所有状态的容器
  • 删除容器:
    • docker rm
    • 不能删除运行中的容器,除非添加 -f 参数
  • 进入容器:
    • 命令是docker exec -it [容器名] [要执行的命令]
    • exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐

Docker数据卷

容器与数据耦合的问题

数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

数据卷操作的基本语法如下:

docker volume [COMMAND]
  • docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
    • create 创建一个volume
    • inspect 显示一个或多个volume的信息
    • ls 列出所有的volume
    • prune 删除未使用的volume
    • rm 删除一个或多个指定的volume

创建数据卷

创建数据卷

docker volume create html

查看所有数据

docker volume ls

查看数据卷详细信息卷

docker volume inspect html

总结

  • 数据卷的作用:
    • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
  • 数据卷操作:
    • docker volume create
    • docker volume ls
    • docker volume inspect
    • docker volume rm
    • docker volume prune

Docker数据挂载

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录

举例

docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

 代码解读:

  • docker run :就是创建并运行容器
  • — name mn :给容器起个名字叫mn
  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
  • -p 8080:80 :把宿主机的8080端口映射到容器内的80端口
  • nginx :镜像名称

案例

创建一个nginx容器,修改容器内的html目录内的index.html内容

需求说明:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。

提示:运行容器时使用 -v 参数挂载数据卷

1.创建容器并挂载数据卷到容器内的HTML目录

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

2.进入html数据卷所在位置,并修改HTML内容

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

总结

  • 数据卷挂载方式:
    • -v volumeName: /targetContainerPath
    • 如果容器运行时volume不存在,会自动被创建出来

创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

  • 提示:目录挂载与数据卷挂载的语法是类似的:
    • -v [宿主机目录]:[容器内目录]
    • -v [宿主机文件]:[容器内文件]
  • 实现思路如下:
    • 通过load命令加载为镜像
    • 创建目录/tmp/mysql/data
    • 创建目录/tmp/mysql/conf,将hmy.cnf文件上传到/tmp/mysql/conf
  • 去DockerHub查阅资料,创建并运行MySQL容器,要求:
    • 挂载/tmp/mysql/data到mysql容器内数据存储目录
    • 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
    • 设置MySQL密码

数据卷挂载的方式对比

总结

  1. docker run的命令中通过 -v 参数挂载文件或目录到容器中:
    • -v volume名称:容器内目录
    • -v 宿主机文件:容器内文件
    • -v 宿主机目录:容器内目录
  2. 数据卷挂载与目录直接挂载的
    • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
    • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BergerLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值