ECS + EFS - 文件永远不会离开容器

时间:2017-05-06 13:34:28

标签: amazon-ecs amazon-efs

我正在尝试使用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。

1 个答案:

答案 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