es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de denegación de permisos al ejecutar la imagen de Docker con un binario de Rust.

Estoy obteniendo “permiso denegado” cuando intento ejecutar una pequeña aplicación Rust CLI a través de un contenedor de Docker. Puedo construir la imagen correctamente, pero cuando intento ejecutarla obtengo:

docker: Error response from daemon: OCI runtime create failed:
container_linux.go:380:
starting container process caused: exec: "./async-scraper": permiso denegado:
desconocido.

Dockerfile

FROM clux/muslrust:1.56.1-stable as builder
WORKDIR /volume
COPY . .
RUN cargo build --release

FROM alpine
COPY --from=builder /volume/target/x86_64-unknown-linux-musl/release ./async-scraper
RUN chmod +x ./async-scraper
ENTRYPOINT [ "./async-scraper","$@"]

Comando de ejecución

sudo docker run --rm -it paul-k/web_scraper:latest - 
https://example-url-arg/

Cargo.toml

[package]
name = "async_web_scraper"
version = "0.1.0"
edition = "2018"

[[bin]]
name = "rat"
path = "src/main.rs"

[lib]
name = "async_scraper"

[dependencies]
select = "0.6.0-alpha.1"
reqwest = { version = "0.11.6", features = ["json"] }
tokio = { version = "1", features = ["full"] }
futures = "0.3.1"
lazy_static = "1.4.0"
url = "2.2.2"
error-chain = "0.12.4"
async-trait = "0.1.51"
simple-error = "0.1.9"
anyhow = "1.0"
log = "0.4.14"
env_logger = "0.9.0"
thiserror = "1.0.30"

[dev-dependencies]
httpmock = "0.6"
tokio-test = "*"
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica un problema de permisos con el ejecutable ./async-scraper en el contenedor de Docker. Para solucionar este problema, podemos intentar los siguientes pasos:

    • Verificar los permisos actuales del ejecutable async-scraper dentro del contenedor de Docker ejecutando el siguiente comando:
      ls -l ./async-scraper
      

      Asegúrese de que el archivo tenga permisos de ejecución (la bandera x) para el usuario que lo ejecutará dentro del contenedor.

    • Si los permisos no están configurados, puede configurarlos ejecutando el siguiente comando en el Dockerfile:

      RUN chmod +x ./async-scraper
      

      Esto establecerá los permisos de ejecución para el archivo async-scraper durante el proceso de construcción de la imagen.

    • Alternativamente, puede intentar configurar los permisos de ejecución al ejecutar el contenedor de la siguiente manera:

      sudo docker run --rm -it -v $(pwd):/app -w /app paul-k/web_scraper:latest sh -c "chmod +x ./async-scraper && ./async-scraper https://example-url-arg/"
      

      Esto montará el directorio actual ($(pwd)) dentro del directorio /app dentro del contenedor, establecerá el directorio de trabajo (-w /app) en /app. Luego ejecutará el comando chmod +x y ejecutará el archivo async-scraper con los argumentos proporcionados.

Comments are closed.