Docker Composer de CoreOS
Je suis actuellement en apprentissage de Docker, et ont fait une belle et simple Docker Composer le programme d'installation. 3 conteneurs, toutes avec leur propre Dockerfile de l'installation. Comment pourrais-je aller sur la conversion de ce travail sur CoreOS afin que je puisse l'installation d'un cluster plus tard?
web:
build: ./app
ports:
- "3030:3000"
links:
- "redis"
newrelic:
build: ./newrelic
links:
- "redis"
redis:
build: ./redis
ports:
- "6379:6379"
volumes:
- /data/redis:/data
Vous devez vous connecter pour publier un commentaire.
prises de https://docs.docker.com/compose/install/
la seule chose est que /usr en lecture seule, mais /opt/bin est accessible en écriture et dans le chemin, de sorte que:
exit
retour àcore
de l'utilisateur et il sera exécuté.mkdir -p /opt/bin
>
drapeau de commande curl donnés dans la réponse à-o
reportez-vous à partir de - digitalocean.com/community/tutorials/...J'ai créé le script simple pour l'installation de la dernière Docker Composer sur CoreOS:
https://gist.github.com/marszall87/ee7c5ea6f6da9f8968dd
Juste l'exécuter avec
sudo
jq
sur ma machine. Peut-être que je devrais tourner àgrep
.jq
semble être installé sur CoreOS, cependant.La bonne façon d'installer ou d'exécuter vraiment rien sur CoreOS est soit
Pour
docker-compose
vous voulez probablement pour l'installer comme une unité, tout comme vous avezdocker
comme une unité. Voir Numériques de l'Océan d'excellents guides sur CoreOS et la les unités systemd chapitre pour en savoir plus.Localiser votre cloud config en fonction de votre fournisseur d'informatique en nuage ou installation personnalisée, voir https://coreos.com/os/docs/latest/cloud-config-locations.html pour les emplacements.
Installer docker-composer par l'ajout d'une unité de
Noter que je ne pouvais pas la
uname -s
etuname -m
l'agrandissement de travail dans la boucle déclaration alors j'ai juste remplacé avec leurs étendue des valeurs.Valider votre fichier de config avec
Il devrait afficher quelque chose comme
Noter que
coreos-cloudinit
ne pas valider le contenu des blocs dans votre cloud-config. Redémarrez CoreOS lorsque vous avez terminé, et vous êtes prêt à aller.Mise à jour: Comme @Wolfgang commentaires, vous pouvez exécuter
coreos-cloudinit --from-file path-to-cloud-config
au lieu de redémarrer CoreOS.coreos-cloudinit --from-file path-to-cloud-config
.wget
avec le-nc
drapeau.ExecStart=/bin/wget -q -nc -O /opt/bin/docker-compose "https://github.com/docker/compose/releases/download/1.14.0-rc2/run.sh" > /opt/bin/docker-compose
Je dirais aussi docker-composer dans un conteneur docker comme celle de dduportal.
Pour des raisons de facilité d'utilisation, j'ai étendu mon cloud-config.yml comme suit:
Après la mise à jour via le cloud-config via sudo coreos-cloudinit -du-url http chemin d'accès à/cloud-config.yml et un redémarrage du système, vous êtes en mesure d'utiliser le menu fixe-composition de commande, comme vous, sont utilisés pour chaque machine.
docker/compose
. Aussi, lerun.sh
script à partir de la github communiqués page utilise ce conteneur avecdocker run
.CentruyLabs créé un rubygem appelé fig2coreos
Il traduit fig.yml pour .les fichiers de service
fig est obsolète depuis docker-composer a été créé, mais la syntaxe semble être la même, de sorte qu'il pourrait probablement travailler.
ici, il est,
la meilleure façon que j'ai trouvée:
fait!
Simple 3 Étapes:
Saisir la commande sur le site officiel https://docs.docker.com/compose/install/ et modifier le chemin de sortie de /usr/local/bin/docker-composer à /opt/bin :
Rendre exécutable:
Maintenant, vous avez docker-composer 🙂
bien, coreOS prend en charge docker, mais il est à nu de l'os linux avec le regroupement de confiance de sorte que vous devez inclure une image de base pour tous vos récipients ( utilisation à PARTIR de et dans Dockerfile vous pourriez aussi avoir besoin de faire EXÉCUTER yum -y install bzip2 gnupg etc., ) qui a les poubelles et les bibliothèques qui sont requises par votre application et redis ( mieux de prendre quelques ubuntu image de base )
Ici vous pouvez mettre toutes dans un seul conteneur/docker ou séparés si vous le faites séparé, alors vous devez lier les conteneurs et éventuellement de montage de volume - menu fixe a quelques bonnes notes à ce sujet (https://docs.docker.com/userguide/dockervolumes/)
Atlast, vous devez écrire le cloud config qui spécifie les unités systemd . Dans votre cas, vous avez 3 unités qui sera lancé par systemd ( systemd remplace le bon vieux système d'init dans coreOS) et le nourrir à coreos-cloudinit ( astuce: coreos-cloudinit -de-file=./cloud-config -valider=false ), Vous devez également fournir ce cloud-config sur le linux chaîne bootcmd de persistance.
Actuellement, le moyen le plus facile à utiliser
docker-compose
contre un CoreOS Vagrant VM. Vous avez juste besoin vous assurez de avant Docker du port.Si vous n'êtes pas particulièrement attaché à l'aide de
docker-compose
, vous pouvez essayer de CoreOS de course Kubernetes. Il y a plusieurs options et j'ai mis en œuvre l'un de ceux pour Azure.docker-compose
est plus simple sur un seul environnement de la machine. Kubernetes est puissant et fonctionne très bien sur l'environnement de cluster, mais peut-être trop pour les cas simples.