9series
Docker

Easy Methods to Share Files from Host to Docker Container

February 23, 2022

share files from host to docker

Sharing files from host to Docker container is one of the most common tasks in containerized development. Whether you are testing code, managing logs, or syncing configuration files, understanding how to transfer files between host and Docker containers is essential. 

Docker has become one of the fastest-growing containerization technologies worldwide. Its consistent runtime environment ensures applications behave the same way across development, staging, and production. 

However, many developers initially find Docker file sharing confusing. The good news is that it is simpler than it seems. Once you understand the right methods, transferring files between host and container becomes straightforward and efficient. 

In this guide, we will explore practical and easy methods to share files from host to Docker, including the Docker cp command and bind mounts using Docker volumes. 

 

Why Share Files Between Host and Docker Containers? 

Docker containers are designed to be lightweight and temporary. By default: 

  • Data created inside a container exists only while the container is running 
  • When a container is removed, its internal data is lost 
  • Files inside the container are isolated from the host system 

However, many real-world applications require persistent data. Examples include: 

  • Database files 
  • Application logs 
  • User-generated content 
  • Configuration files 
  • Source code during development 

To solve this, Docker provides two primary approaches: 

  1. Docker cp command 
  1. Docker volumes and bind mounts 

 

Prerequisites 

Before transferring files between host and Docker container, make sure: 

  • Docker is installed and running 
  • You have access to a working Docker instance 
  • Your user belongs to the docker group 

Once these requirements are met, you are ready to proceed. 

 

Method 1: Using the Docker cp Command 

The docker cp command allows you to copy files and directories between your host machine and a running Docker container. 

Copy from Host to Container 

docker cp <source_path> <container_name>:<destination_path> 

Copy from Container to Host 

docker cp <container_name>:<source_path> <destination_path> 

How It Works 

  • The source path can be a file or directory 
  • The container path is relative to the container’s root directory / 
  • You can copy data in both directions 

Example 

To copy a file named app.js from your host into a container: 

docker cp app.js mycontainer:/usr/src/app/ 

To copy logs from the container to your host: 

docker cp mycontainer:/var/log/app.log ./app.log 

This method is quick and useful for one-time transfers. However, it is not ideal for continuous synchronization. 

 

Method 2: Using Docker Volumes and Bind Mounts 

For ongoing file sharing, Docker volumes are the recommended solution. Volumes allow persistent data storage outside the container lifecycle. 

A bind mount connects a directory on your host machine directly to a directory inside the container. 

 

Step 1: Bind Mount a Directory 

Create a directory on your host machine: 

mkdir ~/nginxlogs 

Now run the following Docker command: 

docker run –name=nginx -d -v ~/nginxlogs:/var/log/nginx -p 5000:80 nginx 

 

Understanding the Command 

Let us break it down: 

  • –name=nginx assigns a name to the container 
  • -d runs the container in detached mode 
  • -v ~/nginxlogs:/var/log/nginx creates a bind mount 
  • -p 5000:80 maps port 80 in the container to port 5000 on the host 
  • nginx specifies the image to use 

The key part here is the -v option. It links: 

Host directory: 

~/nginxlogs 

Container directory: 

/var/log/nginx 

Any file written inside /var/log/nginx in the container will instantly appear in ~/nginxlogs on the host. 

 

Step 2: Access the Running Application 

Since port 5000 is mapped to container port 80, open your browser and visit: 

http://your-server-ip:5000 

You should see the default Nginx welcome page. 

Now check the logs on your host machine: 

cat ~/nginxlogs/access.log 

You will see log entries generated by the Nginx container. 

If you modify files in the host directory, the changes reflect immediately inside the container. This makes bind mounts ideal for development environments. 

 

When to Use Each Method 

Use Docker cp when: 

  • You need to transfer files once 
  • You are debugging 
  • You want to quickly copy logs or configuration 

Use Bind Mounts or Volumes when: 

  • You need persistent data 
  • You are developing locally 
  • Multiple team members need shared access 
  • The container may be removed but data must remain 

 

Best Practices for File Sharing in Docker 

  • Avoid storing important data only inside containers 
  • Use volumes for databases and production workloads 
  • Use bind mounts for development environments 
  • Keep directory structures organized 
  • Ensure proper file permissions 

 

Conclusion 

Sharing files from host to Docker container is a fundamental skill for modern containerized development. 

The Docker cp command is perfect for quick file transfers, while Docker volumes and bind mounts provide long-term, persistent data storage. 

Once you understand these two methods, Docker development becomes significantly smoother and more flexible. 

If your team is scaling containerized applications or modernizing infrastructure, implementing the right file-sharing strategy ensures stability, collaboration, and operational efficiency. 

Read our Recent Articles

AI Powered Community Banking: Why Automation Is the New Relationship Moat in Modern Banking
Uncategorized

AI Powered Community Banking: Why Automation Is the New Relationship Moat in Modern Banking

What is AI Powered Community Banking?  AI powered community banking is the use of artificial intelligence, built on a...

10 min read • Mar 25, 2026 Read more
Deep Learning and Machine Learning: Understanding Their Synergistic Relationship in Modern AI
AI Solutions / Artificial Intelligence

Deep Learning and Machine Learning: Understanding Their Synergistic Relationship in Modern AI

Artificial Intelligence has evolved rapidly over the past decade, largely driven by breakthroughs in Machine Learning and Deep Learning. While...

3 min read • Apr 29, 2024 Read more
AI and IoT Integration: Powering the Next Generation of Smart Connected Environments
AI Solutions / Machine Learning

AI and IoT Integration: Powering the Next Generation of Smart Connected Environments

Introduction  The convergence of Artificial Intelligence and the Internet of Things marks a major milestone in digital transformation. As businesses...

4 min read • Apr 19, 2024 Read more

Let's Discuss Your Strategic Technology Initiatives

Partner with 9series to accelerate your digital transformation journey. Our enterprise architects are ready to design solutions tailored to your unique challenges.

Trusted by global partners

Nailbiter NUs Safaricom Intuify Solvit i-banq Fractal