How to edit a file after I shell to a Docker container?

When working with Docker containers, you may need to edit files directly inside the container after accessing its shell. This is common during debugging, configuration changes, or quick fixes. There are multiple approaches to achieve this, depending on whether you need a temporary solution or want to prepare an image with pre-installed editors.

Accessing a Container Shell

First, you need to access the container's shell. There are two main scenarios:

Creating a New Container with Shell Access

To create and run a new Ubuntu container with interactive shell access:

$ docker run -it --name=mycont ubuntu /bin/bash

The -i (interactive) and -t (pseudo-TTY) options allow you to interact with the container. The /bin/bash command starts a bash shell immediately when the container starts.

Accessing an Existing Running Container

If you already have a container running in the background, use the docker exec command:

$ docker exec -it <container-name> bash

You can verify active containers using:

$ docker ps

Installing Text Editors

Most minimal Docker images (like Ubuntu base images) don't include text editors by default. You'll need to install one:

Installing Vim

First, update the package manager and install vim:

# apt-get -y update
# apt-get -y install vim

Installing Nano (Alternative)

For a simpler editor, you can install nano instead:

# apt-get -y install nano

Creating and Editing Files

Once inside the container shell, you can create and edit files normally:

Creating a File

# touch tutorialspoint.txt

Editing with Vim

# vi tutorialspoint.txt

To edit in vim: press i for insert mode, add your content, press Esc to exit insert mode, then type :wq and press Enter to save and quit.

Editing with Nano

# nano tutorialspoint.txt

Nano shows keyboard shortcuts at the bottom. Use Ctrl+O to save and Ctrl+X to exit.

Verifying File Contents

# cat tutorialspoint.txt

Pre-installing Editors in Docker Images

For a more efficient approach, install text editors during the image build process using a Dockerfile:

FROM ubuntu:latest
WORKDIR /app
COPY . .
RUN apt-get -y update && \
    apt-get install -y vim nano && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

This Dockerfile:

  • Updates the package manager

  • Installs both vim and nano editors

  • Cleans up package cache to reduce image size

Build the image and run a container:

$ docker build -t myimage .
$ docker run -it --name=mycont myimage bash

Comparison of Text Editors

Editor Learning Curve Features Best For
Nano Easy Basic editing Quick edits, beginners
Vim Steep Advanced features, modes Complex editing, power users
Emacs Moderate Extensible, programmable Development, customization

Best Practices

  • Persistent Changes − Remember that changes made to files inside a running container are lost when the container is removed unless you commit the container to a new image or use volumes

  • Volume Mounting − For frequent file editing, consider mounting host directories as volumes using -v flag

  • Multi-stage Builds − Use multi-stage Dockerfile builds to keep production images minimal while having development tools available during build

Conclusion

Editing files inside Docker containers requires installing a text editor first, as minimal base images typically don't include them. You can install editors on-demand inside running containers or pre-install them during the image build process for better efficiency. Choose the approach based on whether you need temporary editing capabilities or permanent access to text editors.

Updated on: 2026-03-17T09:01:38+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements