volume_from指令-docker撰写
使用以下docker-compose.yml
文件:
test: build: ../../
dockerfile: docker/dev/Dockerfile
volumes_from:
- cachev
cachev:
build: ../../
dockerfile: docker/dev/Dockerfile
volumes:
- /build
entrypoint: "true"
cachev
上面文件中的服务启动了卷容器,该卷容器/var/lib/docker/
在Docker主机的文件夹中创建了匿名卷,并/cache
在卷容器(xx_cachev
)中创建了挂载点。
服务中的volumes_from
指令是否在容器中test
创建/build
安装点xx_test
?这点/build
挂载点xx_cachev
的容器?
回答:
从volumes_from
文档:
从另一个服务或容器挂载所有卷…
所以简短的答案 :
volumes_from``/build
在cachev
服务内部 装入由服务定义的卷test
。
长答案:
要回答您的问题,让我们运行该test
服务:
docker compose up test
在回答您的问题之前,让我们确保描述清楚:
上面文件中的cachev服务启动卷容器…
这只是常规容器,由于会立即退出entrypoint: "true"
。
docker ps -a
应该显示:
ac68a33abe59 cache "true" 16 hours ago Exited (0) 4 minutes ago cache_1
但在退出之前,它会创建中指定的卷volumes:
。因此,如果其他服务使用其卷(例如进行缓存),我们可以将其称为卷容器。
在Docker主机的/ var / lib / docker /文件夹中创建匿名卷
同意。- /build
是匿名卷。可以通过查看所有容器安装来验证:
docker inspect [cachev_container_id] --format '{{json .Mounts}}' | jq
应该显示如下内容:
{ "Type": "volume",
"Name": "1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378",
"Source": "/var/lib/docker/volumes/1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378/_data",
"Destination": "/build",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
jq
是在bash中处理json的好工具。安装它以使上面的命令起作用。
并在卷容器(xx_cachev)中创建安装点/ cache。
在cachev:
您提供的服务规格中看不到任何安装迹象。
如果将映射添加- /tmp/cache:/cache
到其volumes
部分,然后docker compose up
test再次运行并检查退出的容器,则应该看到:
{ "Type": "bind",
"Source": "/tmp/cache",
"Destination": "/cache",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
请注意,docker inspect [cachev_service_id] --format '{{json .Mounts}}' |
jq它将显示所有容器安装座,包括docker/dev/Dockerfile
使用VOLUME
说明中指定的安装座。
为了 我们需要检查test
服务容器:
docker inspect [test_container_id] --format '{{json .Mounts}}' | jq
:
将显示所有指定的卷(docker/dev/Dockerfile
如果有的话)以及所有cachev
多亏了volumes_from
指令的卷。
您可以看到test
和cache
容器都具有:
{ "Type": "volume",
"Name": "1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378",
"Source": "/var/lib/docker/volumes/1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378/_data",
"Destination": "/build",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
在他们的坐骑中,这个体积在随后的 docker compose up test
以上是 volume_from指令-docker撰写 的全部内容, 来源链接: utcz.com/qa/412290.html