web-dev-qa-db-fra.com

Comment obtenir le chemin du projet à l'aide de Docker?

J'ai une machine Ubuntu, sur laquelle j'ai installé mon projet sails js (node ​​js). J'utilise Docker sur une machine Ubuntu. Mais malheureusement, je ne parviens pas à trouver l'emplacement du projet. Comme il utilise Docker, nous ne pouvons pas obtenir le répertoire de projet exact.

J'ai essayé d'utiliser la commande suivante

Sudo find . -name "*local.js*"

Il me montre ce fichier dans le répertoire Docker. Mais il existe de nombreux dossiers commençant par du texte alphanumérique aléatoire. Tous ces dossiers contenant le dossier de mon projet mais je suis confus, sur quel dossier je peux obtenir mon dernier code.

Quelqu'un peut-il m'aider à localiser la structure de répertoires de mon projet?

1
arun kamboj

Gérer les répertoires "blobs" dans/var/lib/docker est semé d'embûches.

Pour voir le contenu d'un conteneur Docker, la meilleure façon est d'y exécuter un Shell (si votre image Docker contient un Shell exécutable):

docker run --rm -it --entrypoint /bin/sh <your_image>

Si le conteneur est déjà en cours d'exécution, vous pouvez à la place:

docker exec -it --entrypoint /bin/sh <your_image>

Ensuite, vous avez un shell interactif en cours d'exécution dans le conteneur et vous pouvez l'utiliser pour explorer des fichiers (ls, cat, etc ...)

N'oubliez pas également que vous pouvez dériver l'image du conteneur pour créer une autre image dans laquelle vous ajoutez d'autres commandes (ou déclarez des volumes pour copier des éléments à l'extérieur du conteneur pour inspection).

Si vous souhaitez inspecter le système de fichiers conteneur à votre guise, vous pouvez tout exporter en tant que a.tar:

docker export -o <the_output.tar> <container_name_or_id>

Mais le résultat peut être compliqué si vous partez d'une grande image (Ubuntu, Centos ...)

Pour quelque chose de plus petit, vous exécutez simplement tar à l'intérieur du conteneur avec sa sortie vers stdout, et redirigez (à l'extérieur du conteneur) la sortie vers un fichier TAR:

docker run --rm --entrypoint "" container/image tar -c /the/directory >dump_of_the_directory.tar

En slo-mo:

  • run: démarrer le conteneur
  • --rm: nettoyer
  • --entrypoint "": réinitialiser le point d'entrée sur un shell par défaut (utile si le conteneur définit son point d'entrée pour démarrer un runtime Java, par exemple
  • container/image: le nom de l'image à démarrer
  • tar -c /the/directory demande au conteneur de TAR le répertoire d'intérêt de sa sortie standard (pas de -f). La sortie du conteneur est donc le contenu TAR
  • >dump_of_the_directory.tar: capturer cette sortie standard dans l'hôte et la déplacer vers un fichier TAR

Vous pouvez utiliser une technique similaire sur un conteneur en cours d'exécution avec docker exec au lieu de docker run.

1
xenoid