匿名映射
新建一个容器,并将它的
/usr/local/data映射到宿主机
sudo docker run -di -v /usr/local/data --name 容器名 镜像名
上面的命令将会生成一个匿名卷,放在宿主机的/var/lib/docker/volumes目录
查看宿主机上映射到的目录
sudo ls /var/lib/docker/volumes#映射的目录:#27cf85990bbb9fd819122faa2ada7d89f995fad88f7547db1b9f59388ad30047cd 27cf859.........cd _data#这个目录就是docker容器的/usr/local/data目录#
如果匿名卷越来越多,怎么找:
sudo docker inspect nginx01
结果:
"Mounts": [{"Type": "volume","Name": "27cf85990bbb9fd819122faa2ada7d89f995fad88f7547db1b9f59388ad30047","Source": "/var/lib/docker/volumes/27cf85990bbb9fd819122faa2ada7d89f995fad88f7547db1b9f59388ad30047/_data","Destination": "/usr/local/data","Driver": "local","Mode": "","RW": true,"Propagation": ""}],
具名目录挂载
sudo docker run -di -v docker_xx:/usr/local/data --name 容器名 镜像名
这种方式和匿名区别在于,这个是有名字进行挂载的。挂载的宿主机目录与匿名一样。注意:容器挂载的目录存在不是必须的。你可以随便写个目录,当容器创建时,他会自动创建这个目录.
指定目录挂载
sudo docker run -di --name 容器名 -p 宿主机端口:容器端口 -v 本机目录:容器目录 镜像名
数据卷只读或读写
容器只读,不可写方式
此种方式,宿主机可写可读,容器只能读不能写
sudo docker run -di --name 容器名 -P -v 本机目录:容器目录:ro 镜像名
容器可读写
sudo docker run -di --name 容器名 -P -v 本机目录:容器目录:rw 镜像名
说下-P(大写)和-p(小写)的区别,使用-P时,Docker会随机映射一个49000~49900的端口到容器开放的网络端口。使用docker ps可以看到
继承卷(上一个卷)
sudo docker run -di --volumes-from 容器名n:ro|rw --name 容器名 镜像名
构建一个新的容器
sudo docker run -di --name laravel-ubuntu ubuntu:20.04
构建镜像
sudo docker commit -a="作者" -m="提交信息" 现在容器名 镜像名:version
