我正在尝试使用ECS + EFS(个人站点的MySQL)进行POC,但是文件更改为docker中的已安装卷不会进入EFS。
我将它安装在容器主机上:
us-east-1a.fs-#####.efs.us-east-1.amazonaws.com:/ on /mnt/mysql-data-docker type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.128,local_lock=none,addr=10.0.0.90)
我的任务定义(相关部分)显示:
"mountPoints": [
{
"containerPath": "/var/lib/mysql",
"sourceVolume": "mysql-data",
"readOnly": null
}
]
和
"volumes": [
{
"host": {
"sourcePath": "/mnt/mysql-data-docker"
},
"name": "mysql-data"
}
],
我可以在那里写一个文件,终止主机,让新主机通过扩展组启动并安装,文件仍然存在,所以我知道它正在工作(而且EFS在该FS上显示12kb而不是6kb )。
查看正在运行的MySQL容器:
[ec2-user@ip-10-0-0-128 ~]$ docker inspect e96a7 | jq '.[0].Mounts'
[
{
"Source": "/mnt/mysql-data-docker",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
主机上的 /mnt/mysql-data-docker
仅显示我验证过的测试文件。在容器中,/var/lib/mysql
中有很多东西,但它永远不会进入主机或EFS。
答案 0 :(得分:0)
启动EC2实例时,您可以指定在启动时运行之前运行的“用户数据”脚本
在你的情况下,这样的事情应该有效:
#cloud-boothook
#!/bin/bash
# Install nfs-utils
sudo yum install -y nfs-utils
# Mount EFS, writing the volume to fstab ensures it will automatically mount even on reboot
sudo mkdir -p /mnt/mysql-data-docker
sudo echo "us-east-1a.fs-#####.efs.us-east-1.amazonaws.com:/ /mnt/mysql-data-docker nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2" >> /etc/fstab
sudo mount -a