2017-01-11 3 views
4

J'ai besoin d'être --privileged pour exécuter une commande spécifique dans le Dockerfile mais je ne trouve pas le moyen de dire au docker de le faire.Exécuter la commande en tant que --privileged dans Dockerfile

La commande est RUN echo core > /proc/sys/kernel/core_pattern

Si je mets que dans le Dockerfile le processus de construction échoue.

Si je cours le Dockerfile avec cette ligne commentée mais avec le drapeau --privileged alors je peux bien exécuter la commande dans le conteneur.

Y at-il une solution pour que tout fonctionne à partir du Dockerfile?

Merci

Répondre

1

Pas exactement « Dockerfile », mais vous pouvez le faire avec un script entrypoint à condition que vous exécutez toujours le récipient avec --privileged

Cela dit, je mets en garde contre ce si possible Dans le cadre de la beauté de docker est que vous ne courez pas les choses en tant que root.

Une meilleure alternative, à mon humble avis, est plutôt de changer cela sur le système hôte. De cette façon, il sera également reflété dans le conteneur. Le seul inconvénient à cela est que cela sera reflété sur tous les conteneurs sur ce système (et bien sûr, le système lui-même).

Voici une preuve de concept pour ma solution proposée:

[email protected]:~# docker run -it alpine cat /proc/sys/kernel/core_pattern 
core 
[email protected]:~# echo core2 > /proc/sys/kernel/core_pattern 
[email protected]:~# docker run -it alpine cat /proc/sys/kernel/core_pattern 
core2