Docker Compose 的未定义卷
Undefined volume with Docker Compose
我想将这个 docker CLI 命令(来自 smallstep/step-ca)翻译成 docker-compose.yml 文件到 运行 和 docker compose
(版本 2):
docker run -d -v step:/home/step \
-p 9000:9000 \
-e "DOCKER_STEPCA_INIT_NAME=Smallstep" \
-e "DOCKER_STEPCA_INIT_DNS_NAMES=localhost,$(hostname -f)" \
smallstep/step-ca
此命令成功启动容器。
这是我“撰写”的撰写文件:
version: "3.9"
services:
ca:
image: smallstep/step-ca
volumes:
- "step:/home/step"
environment:
- DOCKER_STEPCA_INIT_NAME=Smallstep
- DOCKER_STEPCA_INIT_DNS_NAMES=localhost,ubuntu
ports:
- "9000:9000"
当我 运行 docker compose up
(再次在这里使用 v2)时,我得到这个错误:
service "ca" refers to undefined volume step: invalid compose project
这是解决这个问题的正确方法吗?我想我在 docker 撰写项目中错过了创建卷的额外步骤,但我不确定那会是什么,或者这是否是一个有效的用例。
Compose 文件也有一个 top-level volumes:
block,您需要在那里声明卷。
version: '3.9'
services:
ca:
volumes:
- "step:/home/step"
et: cetera
volumes: # add this section
step: # does not need anything underneath this
可能还有其他选项,但您通常不需要指定这些选项,除非您需要重新使用预先存在的 Docker 命名卷或者您需要非标准 Linux 安装选项(链接例如,文档给出了一个 NFS 挂载卷的示例。
docker-compose 似乎不知道您通过以下命令创建的“卷”:sudo docker volume create my_xx_volume
所以,只需要手动mkdir
创建一个文件夹和chmod 777 <my_folder>
,然后你的mysql docker就可以很好地使用它了。
(在生产环境中,不要使用 chmod
而是 chown
来更改文件权限)
我想将这个 docker CLI 命令(来自 smallstep/step-ca)翻译成 docker-compose.yml 文件到 运行 和 docker compose
(版本 2):
docker run -d -v step:/home/step \
-p 9000:9000 \
-e "DOCKER_STEPCA_INIT_NAME=Smallstep" \
-e "DOCKER_STEPCA_INIT_DNS_NAMES=localhost,$(hostname -f)" \
smallstep/step-ca
此命令成功启动容器。
这是我“撰写”的撰写文件:
version: "3.9"
services:
ca:
image: smallstep/step-ca
volumes:
- "step:/home/step"
environment:
- DOCKER_STEPCA_INIT_NAME=Smallstep
- DOCKER_STEPCA_INIT_DNS_NAMES=localhost,ubuntu
ports:
- "9000:9000"
当我 运行 docker compose up
(再次在这里使用 v2)时,我得到这个错误:
service "ca" refers to undefined volume step: invalid compose project
这是解决这个问题的正确方法吗?我想我在 docker 撰写项目中错过了创建卷的额外步骤,但我不确定那会是什么,或者这是否是一个有效的用例。
Compose 文件也有一个 top-level volumes:
block,您需要在那里声明卷。
version: '3.9'
services:
ca:
volumes:
- "step:/home/step"
et: cetera
volumes: # add this section
step: # does not need anything underneath this
可能还有其他选项,但您通常不需要指定这些选项,除非您需要重新使用预先存在的 Docker 命名卷或者您需要非标准 Linux 安装选项(链接例如,文档给出了一个 NFS 挂载卷的示例。
docker-compose 似乎不知道您通过以下命令创建的“卷”:sudo docker volume create my_xx_volume
所以,只需要手动mkdir
创建一个文件夹和chmod 777 <my_folder>
,然后你的mysql docker就可以很好地使用它了。
(在生产环境中,不要使用 chmod
而是 chown
来更改文件权限)