- 挂载卷(linux地址/容器地址)
docker run -it -v /root:/usr/share/nginx/html -p 80:80 nginx
- 例如:开启mysql 挂载数据目录
-d 后台运行
-p 端口映射(宿主端口:容器端口)
-v 挂载目录卷(宿主路径:容器路径)
-e 配置容器(设置容器配置)
--name 容器别名
docker run -d -p 3310:3306 -v/home/mysql/conf:/etc/mysql/conf.d -v/home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
具名和匿名挂载
- 匿名挂载
-v 容器内路径(不指定宿主机路径)
docker run -d -P --name nginx01 -v /etc/nginx nginx
- 查看所有 卷 (volume)
docker volume ls
[root@z ~]# docker volume ls
DRIVER VOLUME NAME
local 55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
- 查看挂载情况
[root@z ~]# docker volume inspect 55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
[
{
"CreatedAt": "2021-07-09T05:01:45-04:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5/_data",
"Name": "55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5",
"Options": null,
"Scope": "local"
}
]
- 具名挂载
-v(卷名:容器内路径)
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
[root@z ~]# docker volume ls
DRIVER VOLUME NAME
local 55b4dc84812d16dbc1a565c3f4d13681fd93bd92fec152be78cb457c7c8321b5
local juming-nginx
- 查看挂载情况
[root@z ~]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2021-07-11T22:34:11-04:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
- 所有docker容器内的卷,没有指定目录的情况下都是在
/var/lib/docker/volumes/***/_data
通过具名挂载可以方便找到我们的一个卷,最好使用具名挂载
- 如何确定具名、匿名还是指定路径挂载:
-v 容器路径 匿名挂载
-v 卷名:容器路径 具名挂载
-v /宿主机路径:容器路径 指定路径挂载
拓展
- 通过 -v 容器内路径:ro rw 改变读写权限
ro readonly # 容器只读
rw readwrite # 容器读写
- 一旦设置了这个容器权限,容器对我们挂载出来的内容就有限定了
docker run -d -P --name nginx02 v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 v juming-nginx:/etc/nginx:rw nginx
ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的