2017-05-06 2 views
0

Ich versuche, ein POC mit ECS + EFS (MySQL für eine persönliche Website) zu tun, aber die Datei ändert sich auf das bereitgestellte Volume in Docker nicht machen ihr Weg zu EFS.ECS + EFS - Dateien gehen nie aus dem Container

Ich habe es auf dem Behälter Host montiert:

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)

Meine Aufgabendefinition (relevante Teile) zeigt:

"mountPoints": [ 
    { 
    "containerPath": "/var/lib/mysql", 
    "sourceVolume": "mysql-data", 
    "readOnly": null 
    } 
] 

und

"volumes": [ 
    { 
    "host": { 
     "sourcePath": "/mnt/mysql-data-docker" 
    }, 
    "name": "mysql-data" 
    } 
], 

Ich kann ein schreiben datei dort, beende den host, lass den neuen host über sc kommen Aling-Gruppe und erhalten gemountet, und die Datei ist immer noch da, so dass ich weiß, dass es funktioniert (und EFS zeigt 12kb auf diesem FS anstelle von 6kb).

am laufenden MySQL Container Suche:

[[email protected] ~]$ docker inspect e96a7 | jq '.[0].Mounts' 
[ 
    { 
    "Source": "/mnt/mysql-data-docker", 
    "Destination": "/var/lib/mysql", 
    "Mode": "", 
    "RW": true, 
    "Propagation": "rprivate" 
    } 
] 

/mnt/mysql-data-docker auf der Host-meine Testdatei nur zeigt, dass ich mit prüfte. In dem Container gibt es eine Menge Zeug in /var/lib/mysql, aber es geht nie zum Host oder EFS.

Antwort

1

Schaltet sein, weil aus:

Wenn Sie das Amazon ECS-Optimized AMI oder Amazon Linux AMI Docker Pakete verwenden, die Mount-Namespace der Docker-Daemon beim Start von der Host-unshared ist. Einige andere AMIs können dieses Verhalten ebenfalls aufweisen. Bei einem dieser Programme wird ein Dateisystem-Mount erst beim nächsten Neustart an den Docker-Daemon weitergegeben.

So läuft sudo service docker restart && sudo start ecs es gelöst.

0

Wenn Sie eine EC2-Instanz beim Start können Sie eine „Benutzerdaten“ Skript angeben, die beim Booten ausgeführt wird, bevor die Docker starten

In Ihrem Fall, wie etwas, das sollte funktionieren:

#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 
+0

Dies ist nicht wahr, Andockfenster wird gestartet, bevor Benutzerdaten ausgeführt werden. Das Skript, das ich zuvor hatte, scheiterte auch an Userdata. Die Follow-up-Antwort, die ich gepostet habe, ist bestätigt, funktioniert –

+0

die "Magie" ist zu verwenden # Wolke-Stand. Sie können hier mehr lesen http://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html und hier: https://cloudinit.readthedocs.io/en/latest/topics/format.html –

Verwandte Themen