--- sidebar_position: 2 title: Running a pod using a container or docker file description: Create and run a pod from a container or docker file on your machine. keywords: [podman desktop, podman, pod, Containerfile, Dockerfile] tags: [podman-desktop, running-a-pod-from-docker-file, running-a-pod-from-container-file] --- # Running a pod using a container or docker file This tutorial covers the following end-to-end tasks required to run a pod from a container or docker file: - Building an image - Creating a container - Creating and running a pod When creating a container, you can set the following configurations: - With **Basic** configuration, you have the option to: - Define volumes to configure a persistent storage location. For this, you must set up a host directory and then mount this directory to a container. You can keep your application data intact in your host directory even after your container is stopped or failed. - Define port mapping to create an externally accessible container. For this, you must map a host port with the container port. After this mapping, any requests to port on the host are forwarded to port in the container. - Select a file containing environment variables for your container. This file contains data in the `key=value` format. - With **Advanced** configuration, you have the option of: - Automatic removal of container - Specifying ID of the user who can run a container - Selecting a restart policy that defines whether a container should restart on exit - With **Networking** configuration, you have the option of defining: - A container host name - A custom DNS server - Additional hosts - The networking mode for a container - With **Security** configuration, you have the option to: - Secure you container resources - Make container root filesystem read-only - Add or drop security capabilities - Specify a namespace to restrict the usage of containers to a group of users with defined privileges and ownership ## Before you begin Make sure you have: - [Installed Podman Desktop](/docs/installation). - [A running Podman machine](/docs/podman/creating-a-podman-machine). - A developer role. - Created a docker file using the following code, if you do not have one on your machine: ```dockerfile # syntax=docker/dockerfile:1 ARG NODE_VERSION ARG ALPINE_VERSION FROM node:${NODE_VERSION}-alpine${ALPINE_VERSION} AS base WORKDIR /src FROM base AS build COPY package*.json ./ RUN npm ci RUN npm run build FROM base AS production COPY package*.json ./ RUN npm ci --omit=dev && npm cache clean --force COPY --from=build /src/dist/ . CMD ["node", "app.js"] ``` ## Building an image 1. Click **Containers** in the left navigation pane. 2. Click **Create**. ![Create a new container](img/create-a-new-container.png) 3. On the **Build image from Containerfile** page, provide the following details: - Containerfile path: Select the path where the container or docker file is placed. - Build context directory: The field automatically picks up the context directory based on the file path. - Image name: Enter the image name, if required. - Build arguments: Pass the required arguments to build the image. This example uses arguments, such as `NODE_VERSION` and `ALPINE_VERSION` - Platform: Change the platform on which you want to build the image. The default platform is Intel and AMD x86_64 systems. ![Build an image from a containerfile](img/build-image-from-containerfile.png) 4. Click **Build**. The image starts to build. 5. Click **Done** once the image is built successfully. 6. View the newly created image on the **Images** page. ## Creating a container 1. Click **Images** in the left navigation pane. 2. Click the **Run Image** icon corresponding to the image you want to run. The **Create a container from image page** opens. ![running an image](img/run-image.png) 3. Optional: Configure the basic details of the container: ![basic details of a container](img/basic-config-container.png) 4. Optional: Select the **Advanced** tab to configure advanced details of the container: ![advanced details of a container](img/advanced-config-container.png) 5. Optional: Select the **Networking** tab to configure the networking details of the container: ![networking details of a container](img/networking-config-container.png) 6. Optional: Select the **Security** tab to configure the security details of the container: ![security details of a container](img/security-config-container.png) 7. Click **Start Container**. 8. Check the **Container Details** page for information, such as summary, logs, YAML code, and to access the terminal. ![container details page](img/container-details-page.png) 9. Click the close icon on the right hand side of the page. 10. View the newly created container on the **Containers** page ## Creating and running a pod 1. Go to **Containers** from the left navigation pane. 2. Select the containers from the container list. ![selecting containers](img/selecting-containers.png) 3. Click **Create Pod**. The **Copy containers to a pod** page opens. 4. Change the name of the pod if required and click **Create Pod**. ![creating pods](img/creating-a-pod.png) 5. View the newly created pod on the **Pods** page. 6. Click the **Start Pod** icon corresponding to the pod you created. 7. Check that the pod is running on the same page. ![running pod](img/my-pod.png)