Как монтировать устройства хранения экземпляров AWS I3 и использовать их из приложения C # в Docker - PullRequest
0 голосов
/ 30 июня 2018

Я хочу использовать быстрые диски I3 из приложения C #, которое запускается в Docker через ECS. Но я не вижу dev/nvme0n1 в списке дисков через System.IO.DriveInfo.GetDrives().Select(d => d.ToString());:

"/",
"/proc",
"/dev",
"/dev/pts",
"/sys",
"/sys/fs/cgroup",
"/sys/fs/cgroup/blkio",
"/sys/fs/cgroup/cpu",
"/sys/fs/cgroup/cpuacct",
"/sys/fs/cgroup/cpuset",
"/sys/fs/cgroup/devices", -- maybe here?
"/sys/fs/cgroup/freezer",
"/sys/fs/cgroup/hugetlb",
"/sys/fs/cgroup/memory",
"/sys/fs/cgroup/perf_event",
"/dev/mqueue",
"/etc/resolv.conf",
"/etc/hostname",
"/etc/hosts",
"/dev/shm",
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger",
"/proc/kcore",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"

Я прочитал, что устройства не отформатированы и не смонтированы при запуске. Как отформатировать и смонтировать их только один раз, когда экземпляр запускается , а не когда я публикую новые образы докера? Или сделать это из кода, но проверить, если он уже подключен, и сохранить существующие данные?

1 Ответ

0 голосов
/ 30 июня 2018

Нашел решение для хранения Docker томов в хранилище экземпляров.

from this gist команды для замены /var/lib/docker/volumes ссылкой на dev/nvme0n1:

#!/bin/sh -e
service docker stop || true
DEV="dev/nvme0n1"
umount $DEV 2>/dev/null || true
mkdir /mnt/docker-volumes 2>/dev/null || rm -rf /mnt/docker-volumes/*
mkfs.ext4 $DEV
rm -rf /var/lib/docker/vfs
rm -rf /var/lib/docker/volumes
mount -t ext4 -o noatime,data=writeback,nobh,barrier=0,commit=300 $DEV /mnt/docker-volumes
mkdir /mnt/docker-volumes/vfs
ln -s /mnt/docker-volumes/vfs /var/lib/docker/vfs
mkdir /mnt/docker-volumes/volumes
ln -s /mnt/docker-volumes/volumes /var/lib/docker/volumes

service docker start

Затем команда VOLUME my-vol в Dockerfile создает / использует том в каталоге /mnt/docker-volumes/volumes на хосте.

Эти команды нужно запускать на хост-машине через SSH один раз, но тогда AWS ECS просто работает, и я могу опубликовать новые приложения из Visual Studio всего парой кликов. Не удалось найти способ передачи пользовательских данных из мастера создания кластера ECS, похоже, что он сейчас не поддерживается.

...