# Supported tags and respective `Dockerfile` links - [`1.20.0-stretch`, `1-stretch`, `1.20-stretch`, `stretch`, `1.20.0`, `1`, `1.20`, `latest` (*1.20.0/stretch/Dockerfile*)](https://github.com/rust-lang-nursery/docker-rust/blob/bf30ee63bff0a381ccacdb86436bb7da5dc9c853/1.20.0/stretch/Dockerfile) - [`1.20.0-jessie`, `1-jessie`, `1.20-jessie`, `jessie` (*1.20.0/jessie/Dockerfile*)](https://github.com/rust-lang-nursery/docker-rust/blob/bf30ee63bff0a381ccacdb86436bb7da5dc9c853/1.20.0/jessie/Dockerfile) # Quick reference - **Where to get help**: [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](https://blog.docker.com/2016/11/introducing-docker-community-directory-docker-community-slack/), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - **Where to file issues**: [https://github.com/rust-lang-nursery/docker-rust/issues](https://github.com/rust-lang-nursery/docker-rust/issues) - **Maintained by**: [the Rust Project developers](https://github.com/rust-lang-nursery/docker-rust) - **Published image artifact details**: [repo-info repo's `repos/rust/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rust) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rust)) (image metadata, transfer size, etc) - **Image updates**: [official-images PRs with label `library/rust`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frust) [official-images repo's `library/rust` file](https://github.com/docker-library/official-images/blob/master/library/rust) ([history](https://github.com/docker-library/official-images/commits/master/library/rust)) - **Source of this description**: [docs repo's `rust/` directory](https://github.com/docker-library/docs/tree/master/rust) ([history](https://github.com/docker-library/docs/commits/master/rust)) - **Supported Docker versions**: [the latest release](https://github.com/docker/docker/releases/latest) (down to 1.6 on a best-effort basis) # What is Rust? Rust is a systems programming language sponsored by Mozilla Research. It is designed to be a "safe, concurrent, practical language", supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but is designed for better memory safety while maintaining performance. > [wikipedia.org/wiki/Rust_(programming_language)](https://en.wikipedia.org/wiki/Rust_%28programming_language%29) ![logo](https://raw.githubusercontent.com/docker-library/docs/a11c341c57de07fbccfed7b21ea92d4bc40130a2/rust/logo.png) # How to use this image ## Start a Rust instance running your app The most straightforward way to use this image is to use a Rust container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project: ```dockerfile FROM rust:1.19.0 WORKDIR /usr/src/myapp COPY . . RUN cargo install CMD ["myapp"] ``` Then, build and run the Docker image: ```console $ docker build -t my-rust-app . $ docker run -it --rm --name my-running-app my-rust-app ``` ## Compile your app inside the Docker container There may be occasions where it is not appropriate to run your app inside a container. To compiler, but not run your app inside the Docker instance, you can write something like: ```console $ docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/usr/src/myapp -w /usr/src/myapp rust:1.19.0 cargo build --release ``` This will add your current directory, as a volume, to the container, set the working directory to the volume, and run the command `cargo build --release`. This tells Cargo, Rust's build system, to compile the crate in `myapp` and output the executable to `target/release/myapp`. # License View [license information](https://www.rust-lang.org/en-US/legal.html) for the software contained in this image.