Docker fonctionne très bien sur un Mac pour moi, mais je dois exécuter Docker Host à l'intérieur d'une VirtualBox (ou Parallels ou VMWare Fusion), car le noyau de Mac ne prend pas en charge Docker.
J'ai donc essayé de configurer mon application et un docker-compose sur un bureau Ubuntu - nativement, où le client docker et l'hôte docker s'exécutent physiquement sur le même système. Cela a fonctionné, mais mes conteneurs Docker en cours d'exécution ne peuvent pas écrire dans un volume hôte monté.
J'utilise docker-compose avec les paramètres suivants:
volumes:
- ./api:/usr/src/app
Je monte donc le répertoire "api" de l'hôte Ubuntu OS dans le conteneur Docker sous/usr/src/app.
docker inspect <container ID>
montre que le volume est accessible en écriture
"Destination": "/usr/src/app",
"Mode": "rw",
"RW": true
Mais ce n'est pas le cas: je reçois permission denied
lorsque j'essaie de créer un répertoire ou de modifier un fichier à partir du conteneur Docker.
J'ai recherché ce problème sur Google, bien sûr, et je suis tombé sur quelques problèmes SELinux de CentOS/RHEL, mais j'utilise Ubuntu 15.10, édition 64 bits, pas CentOS.
Si votre uid
sur l'hôte (id -u
) n'est pas le même que le uid
de l'utilisateur dans le conteneur docker (souvent "docker") alors vous pouvez avoir ce problème. Tu peux essayer:
chmod a+rwx -R project-dir/
L'option nucléaire rendra votre espace de travail git
sale, ce qui vous ennuiera énormément, ce n'est donc pas la meilleure solution à long terme. Il arrête le saignement.
Pour mieux comprendre le problème, vous trouverez peut-être ces informations utiles:
Depuis la version 1.7 de Docker, vous avez la possibilité de monter un répertoire Host avec des autorisations sur un conteneur en utilisant les indicateurs: Z ou: z comme ceci:
docker run -v ./api:/usr/src/app:Z
À partir de docker-compose v1.4.0, vous pouvez l'utiliser dans docker compose comme ceci:
volumes:
- ./api:/usr/src/app:Z
Bien que je devrais ajouter, j'ai encore quelques problèmes avec cela (voir Ajout d'autorisations au répertoire hôte avec docker-compose ).
Références:
L'utilisation de volumes avec Docker peut provoquer des problèmes avec SELinux - http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/ =
Guide de l'utilisateur Docker - https://docs.docker.com/engine/userguide/dockervolumes/#volume-labels
Notes de publication Docker-compose pour v1.4.0 - https://github.com/docker/compose/releases/tag/1.4.