首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在docker-compose命名卷中使用现有目录~/.ssh?

问如何在docker-compose命名卷中使用现有目录~/.ssh?
EN

Stack Overflow用户
提问于 2019-11-21 00:09:53
回答 1查看 513关注 0票数 0

我希望将我的~/.ssh映射到停靠容器.ssh。我让docker写成

代码语言:javascript
复制
version: '3'

volumes:
  ssh-data:
    driver: local
    driver_opts:
      type: none
      device: ~/.ssh/
      o: bind

services:
  mysql:
    container_name: mysql
    image: chagridsada/galera-mariadb
    ports:
      - "3306:3306"
    volumes:
      - "ssh-data:/app/.ssh/"
    environment:
      CLUSTER_NAME: galera-db-cluster
      CLUSTER_JOIN:
      MYSQL_ROOT_PASSWORD: dev
      XTRABACKUP_PASSWORD: dev

但是当我尝试运行容器时,它给出了错误。

代码语言:javascript
复制
$ docker-compose up -d

Creating network "training_default" with the default driver
Creating volume "training_ssh-data" with local driver
Creating mysql ... error

ERROR: for mysql  Cannot start service mysql: error while mounting volume '/var/lib/docker/volumes/training_ssh-data/_data': failed to mount local volume: mount ~/.ssh/:/var/lib/docker/volumes/training_ssh-data/_data, flags: 0x1000: no such file or directory

ERROR: for mysql  Cannot start service mysql: error while mounting volume '/var/lib/docker/volumes/training_ssh-data/_data': failed to mount local volume: mount ~/.ssh/:/var/lib/docker/volumes/training_ssh-data/_data, flags: 0x1000: no such file or directory
ERROR: Encountered errors while bringing up the project.

它试图在容器中映射到/var/lib/docker/volumes/training_ssh-data/_data,但在docker-compose.yml中它映射到了/app/.ssh/。

如果我将映射更改为~/.ssh:/app/.ssh,那么它将工作得很好,但我还必须对其他容器使用ssh-data卷,因此我必须创建named volume。

为什么要尝试与/var/lib/docker/volumes/training_ssh-data/_data进行映射?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 01:13:17

我认为(!?)问题是您在Docker Compose中使用的是相对(~/.ssh)引用,您应该使用绝对引用

如果我没记错的话,您可以在Docker组合文件中使用环境变量,因此可以在Linux上用${HOME}/.ssh替换~/.ssh。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58958743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档