From 4c4ca4ceb5176d53d6c50a0b04a0550ff2a52a4a Mon Sep 17 00:00:00 2001 From: worktheclock <85885287+worktheclock@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:06:56 +0200 Subject: [PATCH] Building and running Docker images RITZA edit --- .../building-and-running-docker-images.md | 57 +++++++------------ 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/source/tutorials/building-and-running-docker-images.md b/source/tutorials/building-and-running-docker-images.md index 01688f9..1dd9e4d 100644 --- a/source/tutorials/building-and-running-docker-images.md +++ b/source/tutorials/building-and-running-docker-images.md @@ -7,25 +7,20 @@ myst: # Building and running Docker images -[Docker](https://www.docker.com/) is a set of tools and services used to -build, manage and deploy containers. +[Docker](https://www.docker.com/) is a set of tools and services used to build, manage and deploy containers. -As many cloud platforms offer Docker-based -container hosting services, creating Docker containers for a given service is a -common task when building reproducible software. In this tutorial, you will -learn how to build Docker containers using Nix. +As many cloud platforms offer Docker-based container hosting services, creating Docker containers for a given service is a common task when building reproducible software. +In this tutorial, you will learn how to build Docker containers using Nix. ## Prerequisites -We assume you have both Nix and [Docker installed](https://docs.docker.com/get-docker/). Docker is available in -`nixpkgs`, which is the preferred way to install it on NixOS. However, you can -also use the native Docker installation of your OS, if you are on another Linux -distribution or MacOS. +You will need both Nix and [Docker](https://docs.docker.com/get-docker/) installed. +Docker is available in `nixpkgs`, which is the preferred way to install it on NixOS. +However, you can also use the native Docker installation of your OS, if you are on another Linux distribution or macOS. ## Build your first container -[Nixpkgs](https://github.com/NixOS/nixpkgs) provides `dockerTools` to create -Docker images: +[Nixpkgs](https://github.com/NixOS/nixpkgs) provides `dockerTools` to create Docker images: ```nix { pkgs ? import { } @@ -78,38 +73,34 @@ Finished. /nix/store/y74sb4nrhxr975xs7h83izgm8z75x5fc-docker-image-hello-docker.tar.gz ``` -The image tag (`y74sb4nrhxr975xs7h83izgm8z75x5fc`) refers to the Nix build hash -and makes sure that the Docker image corresponds to our Nix build. The store -path in the last line of the output references the Docker image. +The image tag (`y74sb4nrhxr975xs7h83izgm8z75x5fc`) refers to the Nix build hash and makes sure that the Docker image corresponds to our Nix build. +The store path in the last line of the output references the Docker image. ## Run the container -To work with the container, load this image into -Docker's image registry from the default `result` symlink created by nix-build: +To work with the container, load this image into Docker's image registry from the default `result` symlink created by `nix-build`: ```shell-session $ docker load < result Loaded image: hello-docker:y74sb4nrhxr975xs7h83izgm8z75x5fc ``` -You can also use the store path to load the image in order to avoid depending on the presence of -`result` +You can also use the store path to load the image in order to avoid depending on the presence of `result`: ```shell-session $ docker load < /nix/store/y74sb4nrhxr975xs7h83izgm8z75x5fc-docker-image-hello-docker.tar.gz Loaded image: hello-docker:y74sb4nrhxr975xs7h83izgm8z75x5fc ``` -Even more conveniently, you can do everything in one command. The advantage of this approach -is that `nix-build` will rebuild the image if there are any changes and pass the new store -path to `docker load`: +Even more conveniently, you can do everything in one command. +The advantage of this approach is that `nix-build` will rebuild the image if there are any changes and pass the new store path to `docker load`: ```shell-session $ docker load < $(nix-build hello-docker.nix) Loaded image: hello-docker:y74sb4nrhxr975xs7h83izgm8z75x5fc ``` -Now that you have loaded the image into Docker, it is time to run it: +Now that you have loaded the image into Docker, you can run it: ```shell-session $ docker run -t hello-docker:y74sb4nrhxr975xs7h83izgm8z75x5fc @@ -118,20 +109,16 @@ Hello, world! ## Working with Docker images -A general introduction to working with Docker images is not part of this -tutorial. The [official Docker documentation](https://docs.docker.com/) is a -much better place for that. Note that when you build your -Docker images with Nix, you will probably not write a `Dockerfile` -as Nix replaces the Dockerfile functionality within the Docker ecosystem. +A general introduction to working with Docker images is not part of this tutorial. +The [official Docker documentation](https://docs.docker.com/) is a much better place for that. -Nonetheless, understanding the anatomy of a Dockerfile may still be useful to -follow along how Nix replaces each of its functions. Using the Docker CLI, -Docker Compose, Docker Swarm or Docker Hub on the other hand may still be -relevant depending on your use case. +Note that when you build your Docker images with Nix, you will probably not write a `Dockerfile` as Nix replaces the Dockerfile functionality within the Docker ecosystem. +Nonetheless, understanding the anatomy of a Dockerfile may still be useful to understand how Nix replaces each of its functions. +Using the Docker CLI, Docker Compose, Docker Swarm or Docker Hub on the other hand may still be relevant, depending on your use case. ## Next steps - More details on how to use `dockerTools` can be found in the [reference documentation](https://nixos.org/nixpkgs/manual/#sec-pkgs-dockerTools). -- You will also want to [browse through more examples of Docker images built with Nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/docker/examples.nix). -- [Arion](https://docs.hercules-ci.com/arion/), docker-compose wrapper with first-class support for Nix. -- Build docker images on a {ref}`CI with Github Actions ` +- You might like to browse through more [examples of Docker images built with Nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/docker/examples.nix). +- Take a look at [Arion](https://docs.hercules-ci.com/arion/), a `docker-compose` wrapper with first-class support for Nix. +- Build docker images on a {ref}`CI with Github Actions `.