如何在docker compose命名卷中使用现有目录~/.ssh?
我想将我的~/.ssh映射到docker container.ssh。我让docker作曲如何在docker compose命名卷中使用现有目录~/.ssh?,docker,ssh,docker-compose,docker-volume,Docker,Ssh,Docker Compose,Docker Volume,我想将我的~/.ssh映射到docker container.ssh。我让docker作曲 version: '3' volumes: ssh-data: driver: local driver_opts: type: none device: ~/.ssh/ o: bind services: mysql: container_name: mysql image: chagridsada/galera-maria
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
但是当我尝试运行容器时,它会给出错误
$ 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\u ssh-data/\u数据,但在docker-compose.yml中它映射到/app/.ssh/
如果我将映射更改为~/.ssh:/app/.ssh,那么它可以正常工作,但我也必须为其他容器使用ssh数据卷,所以我必须创建命名卷
为什么要尝试使用/var/lib/docker/volumes/training\u ssh-data/\u data进行映射?我想!?问题是您在Docker Compose中使用的是相对~/.ssh引用,应该使用绝对引用
如果我没记错的话,您可以在Docker Compose文件中使用环境变量,因此可以在Linux上用${HOME}/.ssh替换~/.ssh 首先,这似乎是个坏主意。在映像本身中创建您需要的任何配置,并为容器生成专用密钥,而不是使用您自己的密钥。我们必须从容器中执行ssh隧道,为此,我们需要将密钥映射到容器中。如果我们在容器中生成新密钥,可能需要为ssh添加新密钥tunneling@chepner将它视为已经退出的不同目录,看看是否可以使用该目录。