一、存储卷简介
1、什么是存储卷(volume)
2、存储卷的类型
Bind mount volume:
Docker managed volume
Bind mount volume
Docker managed volume
案例1:创建一个docker管理的卷
[root@host1 ~]# docker run --name httpd1 -it --rm -v /data busybox
/ #
/ # echo "test message">>/data/test.txt
/ #
[root@host1 ~]# docker inspect httpd1
"Mounts": [
{
"Type": "volume",
"Name": "636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c",
"Source": "/var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data",
"Destination": "/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
[root@host1 ~]# cd /var/lib/docker/volumes/636a1967c63705161f941550edf4b0ced1584bf71087596ad61a49df4cd6ae4c/_data
[root@host1 _data]# cat test.txt
test message
[root@host1 _data]#
案例2:创建容器,使用宿主机的/disk目录挂载到容器中
[root@host1 ~]# docker run --name httpd1 -it --rm -v /disk:/data busybox
/ #
/ # echo "test message">/data/t.txt
/ #
[root@host1 ..]# cat /disk/t.txt
test message
我们在设置容器所用的存储卷的时候,还可以设置容器所用的存成卷和另一个容器的存储卷相同
案例3:比如前面我们做好了容器httpd1,这里我们再做一个httpd2,让2和1用相同的存储卷
[root@host1 ..]# docker run --name httpd2 --rm -it --volumes-from httpd1 busybox
/ #
/ # ls /data/
t.txt
/ #
3、基础架构容器使用举例
案例:基于基础架构容器制作容器
1)先创建基础架构容器
[root@host1 ~]# docker run --name base1 -it --rm -v /disk:/data busybox
2)创建nginx容器,复制基础架构的卷,并使用基础架构名空间
[root@host1 ..]# docker run --name nginx1 \
> --network container:base1 \
> --volumes-from base1 -it nginx:1.14-alpine
过滤容器属性数据
docker inspect的结果是一个列表,在列表列表中是json格式的字符串
如果此时要过滤数据,其格式是 docker inspect -f {xxx} b5 来实现过滤效果
-f后面是双{},外侧的{}是固定格式,内侧的{}表示从{}中进行过滤
过滤元素的格式 -f '{{.path.item}}'
[root@host1 ..]# docker inspect httpd1 -f '{{.Id}}'
24053ef79c61400f0f8a151087bfd7c1e31e004ee9b87b8a2e64f1efd72d2b52
[root@host1 ..]# docker inspect httpd1 -f '{{.State.Status}}'
running