第三节 容器数据卷
发布日期:2021-05-18 03:47:45 浏览次数:15 分类:精选文章

本文共 1502 字,大约阅读时间需要 5 分钟。

指定路径挂载

在docker中使用指定路径挂载,可以将宿主机的绝对路径与容器路径一一对应。

命令示例:

```bash
docker run -it -v /data/tomcat:/home/tomcat -p 8080:8080 tomcat /bin/bash

此命令将宿主机的/data/tomcat目录挂载到容器的/home/tomcat目录中,前者为宿主机路径,后者为容器路径。

MySQL实践

以MySQL容器为例,挂载步骤如下:

```bash docker run -d -p 3310:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=1qaz@WSX --name=mysql01 mysql:5.7 ```

挂载参数说明:

- `-d`:表示将容器运行在后台。 - `-p 3310:3306`:将宿主机的3310端口映射到容器内的3306端口。 - `-v /data/mysql/data:/var/lib/mysql`:将宿主机的/data/mysql/data目录挂载到容器的/var/lib/mysql目录中。 - `-v /data/mysql/conf:/etc/mysql/conf.d`:将宿主机的/data/mysql/conf目录挂载到容器的/etc/mysql/conf.d目录中。 - `-e MYSQL_ROOT_PASSWORD=1qaz@WSX`:设置MySQL根用户的密码。 - `--name=mysql01`:指定容器名称。

具名挂载与匿名挂载

具名挂载

特定的卷名挂载可以通过选定卷名和容器路径来实现:

```bash docker run -d -P -v juming:/etc/nginx --name=nginx01 nginxf5cc7353180ab5230108c3f098fc25bb80fee5fe958f3bb49f9814ab33b37ab1 ```

此命令的含义是将卷名为"juming"的卷挂载到容器中的/etc/nginx目录。可以通过以下命令查看挂载情况:

```bash docker volume ls ```

也可以通过查看卷所在的目录来确认挂载效果:

```bash cd /var/lib/docker/volumes/juming/_data ```

匿名挂载

匿名挂载则是直接将宿主机的路径挂载到容器中的特定路径,而不需要为其命名。

```bash docker run -d -P -v /etc/nginx --name=nginx02 nginx ```

可以通过以下命令查看匿名挂载情况:

```bash docker volume ls ```

拓展

挂载方式还支持读写模式控制,默认采用可读可写模式:

```bash docker run -d -P -v zzl:/etc/nginx:ro --name=nginx03 nginx ```

在只读模式下,宿主机的路径只允许读取操作,不能在容器中进行写入:

```bash docker exec -it 9a8263265768 /bin/bash ```

使用命令`touch a.txt`会失败,因为目录是只读目录。你需要在宿主机中创建文件:

```bash cd /var/lib/docker/volumes/zzl/_data touch zzl.py ``` ```
上一篇:第四节 构建镜像
下一篇:第二节 docker镜像以及容器常用命令

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月29日 00时46分05秒