每次我运行以下命令:
> docker-compose up -d
...在我有以下docker-compose.yaml文件的目录中,我得到了一个随机命名的新卷。
docker-compose.yaml:
version: '3.7'
services:
pgadmin:
restart: always
image: dpage/pgadmin4
container_name: pgadmin_container
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-foobar}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-password}
ports:
- "${PGADMIN_PORT:-8080}:80"
在命令行中输出:
C:\postgres> docker-compose up -d
Creating network "postgres_default" with the default driver
Creating pgadmin_container ... done
C:\postgres> docker volume ls
DRIVER VOLUME NAME
local 3ee8f970ff477052c6fba9001575a0efa0254deb8dcf73ca97d0422231c74931
C:\postgres> docker-compose down
Stopping pgadmin_container ... done
Removing pgadmin_container ... done
Removing network postgres_default
C:\postgres> docker-compose up -d
Creating network "postgres_default" with the default driver
Creating pgadmin_container ... done
C:\postgres> docker volume ls
DRIVER VOLUME NAME
local 3ee8f970ff477052c6fba9001575a0efa0254deb8dcf73ca97d0422231c74931
local 705dad9c905eb8f1679a9ee4ff290363c40f5285b8048204cab44bce26916845
C:\postgres>
您将看到在第一个“ up”之后有一个具有64个字符的名称的卷,在第二个对“ docker-compose up”的调用之后,有两个。此模式继续。
是什么导致随机命名的卷?我如何防止他们的创造力迫使系统重新使用他们?
我实际上已经编辑了docker-compose.yaml文件,使其达到最低限度来重新创建问题。实际上,还有一个Postgres数据库正在使用相同的文件启动。
答案 0 :(得分:2)
如果您使用docker inspect dpage/pgadmin4
进行查看,则会看到下一个:
"Volumes": {
"/var/lib/pgadmin": {}
},
这意味着在其Dockerfile
中,它定义了Anonymous volumes
,如下所示:
VOLUME ["/var/lib/pgadmin"]
每次上/下服务时,以上都会更改卷名。为使其不变,您可以使用Named volumes
覆盖它,如下所示:
version: '3.7'
services:
pgadmin:
restart: always
image: dpage/pgadmin4
container_name: pgadmin_container
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-foobar}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-password}
ports:
- "${PGADMIN_PORT:-8080}:80"
volumes:
- my-data:/var/lib/pgadmin
volumes:
my-data:
答案 1 :(得分:1)
根据docs,图片在以下位置创建了一个体积:
/var/lib/pgadmin
这是pgAdmin存储会话数据的工作目录, 用户文件,配置文件及其配置数据库。 将此目录映射到主机上,可以轻松实现 在容器调用之间保持配置。
docker inspect container_id
显示:
"Mounts": [
{
"Type": "volume",
"Name": "70c8ae8e1de3e5d6c71fa9c63930cc75761132f4fdb75a2982b32454313b78c6",
"Source": "/var/lib/docker/volumes/70c8ae8e1de3e5d6c71fa9c63930cc75761132f4fdb75a2982b32454313b78c6/_data",
"Destination": "/var/lib/pgadmin",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
因此似乎每次都创建一个匿名卷
为了重用该卷,请使用docker-compose start/stop
而不是docker-compose up/down
。 here讨论了类似的问题,