Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
Acceda a archivos de datos en la imagen de Docker desde el host

Sé que montar/usar un volumen al ejecutar una imagen sobrescribirá el directorio en el contenedor con el directorio en el host.

Me pregunto si esto se puede hacer al revés.

Tengo datos en my-image que se crearon durante la docker build .

 docker run -dit --volume ~/data:/usr/data my-image

Desde el comando anterior, el directorio host ~/data se asignará dentro del contenedor Docker al directorio /usr/data . Quiero el comportamiento opuesto, quiero que el directorio del contenedor /usr/data se asigne al host ~/data (esencialmente sobrescribiendo cualquier cosa dentro del directorio del host ~/data ).

es posible?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Aquí hay algunas ideas:

Vincular/montar carpeta de volumen

  1. Convierta una carpeta dentro del contenedor en un volumen (por ejemplo, marcándolo como un VOLUME dentro del Dockerfile )

  2. En el host, vincule o monte la carpeta de volumen en la ubicación deseada (según lo que funcione y lo que necesite). Esto es posible porque los volúmenes se encuentran dentro de /var/lib/docker/volumes/ ; solo necesita encontrar la carpeta correspondiente inspeccionando el contenedor.

El beneficio aquí es que puede acceder a los datos incluso si el contenedor no se está ejecutando.

Use FUSE, por ejemplo, sshfs

Una solución más "genérica" sería usar algo como sshfs .

Obviamente, requiere que su contenedor ejecute ssh y establezca la conexión antes de que se pueda acceder a los datos del contenedor.

over 4 years ago · Santiago Trujillo Relatório

0

Como @Tomasz sugiere una solución que también es posible, pero antes de publicar mi respuesta, compartiré nuestro caso de uso por qué hacemos esto.

asignamos el directorio /data/ del host en el momento de la creación con un directorio vacío del contenedor /root/data/ y luego copiamos un código remoto desde /home/tempdata/data/ a /root/data del contenedor que anula cualquier cosa en el directorio de montaje, es decir, ~/data del host durante el tiempo de arranque.

Entonces, como resultado, el usuario obtendrá el código más reciente del contenedor para alojar el directorio, lo que significa una forma de anular una forma un poco complicada de lograr el caso contrario.

 docker build -t override . docker run -it --rm --privileged -p 8081:8080 --name tt -v ~/data/:/root/data override

respuesta del contenedor docker después del arranque

Aquí está el Dockerfile basado en alpine

 FROM python:3.6-alpine RUN mkdir -p /etc/supervisord.d RUN apk add --no-cache supervisor git npm # general config for supervisord RUN echo $'[supervisord] \n\ [unix_http_server] \n\ file = /tmp/supervisor.sock \n\ chmod = 0777 \n\ chown= nobody:nogroup \n\ [supervisord] \n\ logfile = /tmp/supervisord.log \n\ logfile_maxbytes = 50MB \n\ logfile_backups=10 \n\ loglevel = info \n\ pidfile = /tmp/supervisord.pid \n\ nodaemon = true \n\ umask = 022 \n\ identifier = supervisor \n\ [supervisorctl] \n\ serverurl = unix:///tmp/supervisor.sock \n\ [rpcinterface:supervisor] \n\ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface \n\ [include] \n\ files = /etc/supervisord # clone remote code so that can override local code of the user specified directory RUN git clone https://github.com/IBM-Bluemix/bluemix-hello-node /home/tempdata/data/ # copy code from container directory to host mount directory RUN echo $'#!/bin/ash \n\ echo "********************************8" \n\ mkdir -p /root/data/ \n\ mkdir -p /home/tempdata/ \n\ echo "*******Overiding /data/ of host machine ****" \n\ # this will override host machine files like if server.js modified on host this will overide with remote server.js cp -r /home/tempdata/data/ /root/ \n\ cd /root/data/; npm i; npm start' >> /root/override.sh RUN echo $'[supervisord] \n\ nodaemon=true \n\ [program:override] \n\ command=/root/override.sh \n\ stdout_logfile=/dev/fd/1 \n\ stdout_logfile_maxbytes=0MB \n\ stderr_logfile_maxbytes = 0 \n\ stderr_logfile=/dev/fd/2 \n\ redirect_stderr=true \n\ autorestart=false \n\ startretries=0 \n\ exitcodes=0 ' >> /etc/supervisord.d/override.conf RUN chmod +x /root/override.sh EXPOSE 8080 ENTRYPOINT ["supervisord", "--nodaemon", "--configuration", "/etc/supervisord.conf"]
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda