397 liens privés
J'utilise un gitlab-runner docker avec https://framagit.org. S'ils se font trouer un jour, je ne veux pas que mon serveur se fasse trouer à son tour.
Un début de sécurisation : restreindre le runner sur certaines images avec allowed_images
. "If not present all images are allowed".
Et bien sûr : privileged = false
(présent par défaut lors de l'enregistrement du runner docker)
Possibilité de configurer des tags pour les logs, au niveau daemon.
--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}"
Ca éviter d'avoir à spécifier la chose au niveau runtime (et de faire du code qui peut être redondant).
Il faut que le driver de logging le supporte. Exemple: https://docs.docker.com/engine/admin/logging/awslogs/#tag
TL;DR;
<match docker.nginx>
@type rewrite_tag_filter
rewriterule1 source stdout docker.nginx.stdout
rewriterule2 source stderr docker.nginx.stderr
</match>
Technique pour splitter les logs stdout et stderr avec fluentd.
Le filtrage se fait via le champs source
pour docker: https://docs.docker.com/engine/admin/logging/fluentd/
Ca se base sur le plugin rewrite_tag_filter
http://docs.fluentd.org/articles/out_rewrite_tag_filter
Ca fait du bien autant d'honnêteté sur ce sujet, surtout venant d'une core dev Docker.
En parlant de DeviceMapper, elle dit :
It works great on RedHat.
Clairement. J'ai tenté sur debian, j'ai ouvert 2 bug requests (#21330 #21304)) et je suis retourné sur aufs.
A few weeks ago I faced an interesting problem trying to analyze a memory consumption in my Java application (Spring Boot + Infinispan) running under Docker. The Xmx parameter was set to 256m, but the Docker monitoring tool displayed almost two times more used memory. Below we will try to understand the reasons of such a strange behavior and find out how much memory the app consumed in fact.
Je ne connaissais pas le Native Memory Tracker
du jdk8
A lire, cette màj:
Update: The conclusion of this post talks about managing Docker kittens with Ansible; I no longer do that, but instead use Amazon ECS with Terraform. Docker has stabilized a lot since my early experiences as well. However some things like custom kernel parameters (e.g. for Redis) will always be a limitation. I’ll write a new blog post on how I use ECS and Terraform soon.
Huhu.. Toujours est-il que ces schedulers docker sont encore bien jeunes pour y faire tourner de la prod. ECS semble stable mais il souffre d'un manque de fonctionnalité pour faire du stateful:
- Pas de notion d'affinité / d'anti-affinité entre tâches, même si on trouve ce workaround dégueu: https://github.com/aws/amazon-ecs-agent/issues/212#issuecomment-143591755 (cf. https://jeekajoo.eu/links/?-RNUJQ)
- Pas de support des drivers de stockage: https://github.com/aws/amazon-ecs-agent/issues/236 . Rédhibitoire pour faire tourner une base de données mysql ou postgresql.
- On doit se farcir le discovery des services via un consul / etcd qu'on va gérer soit-même. C'est possible, mais hors process et faillible car en dehors du contrôle des services dont le rôle est de respawner des tâches. cf https://jeekajoo.eu/links/?5Rqafg
Yes, two tasks from the same task definition can be started on the same container instance as long as none of the consumed resources conflict. If you want to prevent this behavior, the easiest way is to assign a host port in the task definition. Assigning a host port will consume a resource (a port) on the host that is then unavailable when the second task needs to be placed.
Haha, voici la méthode pour créer une sorte d'anti-affinité entre des tâches dans un cluster ECS ; pour faire en sorte que 2 tâches ne se retrouvent pas sur la même instance (vm).
D'après le commentaire juste en dessous, ils bossent pour proposer une option. Dans le futur, on peut donc espèrer un truc éminemment plus propre que cette gruikerie réseau.
REX-Ray delivers persistent storage access for container runtimes including those provided by Docker, Mesos and others. It is designed to enable advanced storage functionality across common storage, virtualization and cloud platforms.
Un driver de stockage docker, codé par EMC en go, qui permet d'apporter de la persistance aux containers qui sont par nature jetables, alors que ce qu'on souhaite parfois faire tourner dedans n'est en rien stateless..
Code: https://github.com/emccode/rexray
Outil similaire: Flocker
via https://kvaes.wordpress.com/2016/02/11/docker-storage-patterns-for-persistence/ qui explique certains concepts à ce sujet
On peut avoir besoin de lancer une tâche sur chaque instance à leur démarrage, notamment pour démarrer la partie monitoring ou bien pour lancer un service de discovery comme consul.
Ce billet explique comment.
TL;DR; ?
- assigner un rôle IAM aux instances pour leur donner le droit de lancer des tâches ECS
- éditer un script bash dans le "User data" pour lancer un
aws ecs start-task --task-definition <task_name:version> ...
Le seul soucis, c'est que si la tâche foire, il n'y aura rien pour la relancer. C'est notamment le rôle des "services" mais ceux-ci sont destinés à un cluster.
« Non docker n'est pas la "silver bullet", et il a d'ailleurs ses propres défauts. Petit tour des trucs qui clochent dans Docker. »
Avec Nicolas De Loof (Cloudbees) qui, dans cet épisode, fait un clin d'oeil au "Joueur du grenier". Déja 1000 abonnés à sa chaîne youtube.
docker-compose: évolutions de la v1 vers la v2
There’s been a welcome focus in the Docker community recently around image size. Smaller image sizes are being championed by Docker and by the community. When many images clock in at multi-100 MB a...
En gros ils rappelent que chaque instruction d'un Dockerfile donne lieu à un commit. Ils expliquent donc comment éviter des commits qui font que les images résultantes sont inutilement volumineuses.
Hum, ça ça m'intéresse. Je suis en plein dedans.