docker目录和本地目录互通的实现

 更新时间:2023年08月10日 11:43:10   作者:liulanba  
本文介绍了如何实现Docker目录和本地目录互通,通过这种方式,可以轻松地在Docker容器和本地文件系统之间共享数据,感兴趣的可以了解一下

1.docker run使用-v 绑定一个卷

来实现容器中的目录与本地某个目录的联通,这样可以让容器中的数据在容器销毁之后仍然可以被保留下来。下面是一些基本的步骤:

创建一个本地目录,用于存储容器中的数据。例如,我们可以在本地创建一个目录 /data,用于存储容器中的数据。

在运行容器时,使用 -v 参数将本地目录挂载到容器内部的目录上。例如,如果我们要运行一个 MySQL 容器,并将本地的 /data 目录挂载到容器内部的 /var/lib/mysql 目录上,可以使用如下命令:

docker run -d \
    --name my-mysql \
    -v /data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw \
    mysql:latest

在这个命令中,我们使用 -v 参数将本地的 /data 目录挂载到容器内部的 /var/lib/mysql 目录上。这样,在容器内部的数据就会被保存到本地的 /data 目录中。

运行容器后,容器中的数据就可以和本地的 /data 目录保持联通了。例如,如果我们要在 MySQL 容器中创建一个名为 mydatabase 的数据库,可以使用如下命令:

docker exec -it my-mysql mysql -uroot -pmy-secret-pw -e "CREATE DATABASE mydatabase;"

在这个命令中,我们使用 docker exec 命令进入到运行中的 MySQL 容器中,并执行一个 SQL 命令来创建一个名为 mydatabase 的数据库。由于我们已经将容器内部的 /var/lib/mysql 目录挂载到了本地的 /data 目录上,因此在容器内部创建的数据也会被保存到本地的 /data 目录中。

总之,使用数据卷可以让容器中的目录和本地的某个目录保持联通,从而实现容器数据的持久化。

2.docker-compose.yml中使用数据卷(Volume)

在 Docker Compose 中,可以使用 volumes 来实现容器中的目录与本地某个目录的联通。下面是一个基本的例子:
假设我们有一个 Django 应用程序和一个 MySQL 数据库。我们想要将 Django 应用程序和 MySQL 数据库分别运行在两个容器中,并且想要将 MySQL 数据库中的数据保存到本地的 /data/mysql 目录中。在这种情况下,我们可以创建一个 docker-compose.yml 文件,并在其中指定 volumes,如下所示:

version: "3"
services:
  db:
    image: mysql
    volumes:
      - /data/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      DB_HOST: db
      DB_NAME: mydatabase
      DB_USER: root
      DB_PASSWORD: my-secret-pw

在上面的 docker-compose.yml 文件中,我们定义了两个服务:一个 MySQL 服务(名为 db),一个 Django 服务(名为 web)。我们还定义了两个 volumes,一个用于将本地的 /data/mysql 目录挂载到 MySQL 容器中的 /var/lib/mysql 目录上,另一个用于将当前目录(即 .)挂载到 Django 容器中的 /code 目录上。

这样,在运行 Docker Compose 时,我们可以使用如下命令:

docker-compose up

Docker Compose 会自动创建并启动两个容器,并将它们连接在一起。MySQL 容器中的数据会被保存到本地的 /data/mysql 目录中,而 Django 容器中的代码会被保存到本地的当前目录中。

区别:

使用 volumes 可以让容器中的目录和本地的某个目录保持联通,从而实现容器数据的持久化。

使用 -v 参数将本地的目录挂载到容器中时,Docker 会将本地目录中的数据直接复制到容器中,但容器中的数据并不会自动同步到本地目录中。这意味着,如果容器被删除或本地目录被删除,那么数据也将被删除,无法进行持久化。

相比之下,使用 volumes 来挂载目录时,Docker 会将数据存储在 Docker 所管理的卷中。这些卷可以被 Docker Compose 管理,可以轻松地备份和恢复。此外,可以使用 docker volume 命令来管理这些卷。使用 volumes,可以更好地管理和持久化容器中的数据。

另外,使用 volumes 还可以在容器中共享数据,并且可以在多个容器之间共享。这种方法可以减少数据复制的时间和空间,并减少硬盘的使用量。

综上所述,使用 volumes 比使用 -v 参数更加灵活和可管理,可以更好地管理容器中的数据,可以减少硬盘使用量,并且可以在多个容器之间共享数据。

到此这篇关于docker目录和本地目录互通的实现的文章就介绍到这了,更多相关docker目录和本地目录互通内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker 容器指定自定义网段的固定IP/静态IP地址

    Docker 容器指定自定义网段的固定IP/静态IP地址

    这篇文章主要介绍了Docker 容器指定自定义网段的固定IP/静态IP地址的相关资料,需要的朋友可以参考下
    2016-12-12
  • 二进制部署docker的超详细教程

    二进制部署docker的超详细教程

    部署环境并不会一直顺利,有些时候因为时内网环境,无法使用yum等情况,对于一些中间件的部署缺少依赖,我们可以使用二进制包的形式部署docker,这篇文章主要给大家介绍了关于二进制部署docker的相关资料,需要的朋友可以参考下
    2024-04-04
  • docker中间件部署超详细步骤

    docker中间件部署超详细步骤

    docker是现在很火的一项容器技术,能够帮助来部署我们来快速部署各类环境,这篇文章主要介绍了docker中间件部署的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • 使用 VPS 下载 Docker 镜像并导入到本地服务器的过程

    使用 VPS 下载 Docker 镜像并导入到本地服务器的过程

    这篇文章主要介绍了使用 VPS 下载 Docker 镜像并导入到本地服务器,通过使用 VPS 下载 Docker 镜像并将其传输到本地服务器,我们可以克服网络限制,更灵活地管理和部署 Docker 镜像,需要的朋友可以参考下
    2024-08-08
  • docker容器内运行jupyter映射到本地方式

    docker容器内运行jupyter映射到本地方式

    通过在容器内指定Jupyter的IP为0.0.0.0,并使用--no-browser参数,可以正确将Jupyter端口映射到本地,具体步骤包括在本地机器运行Docker容器,指定端口映射;在容器内运行Jupyter Notebook,设置--ip和--no-browser参数(一般还需--allow-root)
    2024-11-11
  • docker和docker-compose一键安装教程(支持在线和离线)

    docker和docker-compose一键安装教程(支持在线和离线)

    这篇文章主要介绍了docker和docker-compose一键安装(支持在线和离线),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Docker部署Nginx并配置反向代理

    Docker部署Nginx并配置反向代理

    这篇文章介绍了Docker部署Nginx并配置反向代理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • 解决docker修改mysql配置文件的问题

    解决docker修改mysql配置文件的问题

    今天在用docker启动一个5.7的数据库在建表时候遇到一个问题,但是很快就解决了,下面小编给大家讲解下docker怎么修改mysql内部的配置,感兴趣的朋友跟随小编一起看看吧
    2022-10-10
  • Docker关键文件误删恢复的全面指南

    Docker关键文件误删恢复的全面指南

    在使用 Docker 时,某些关键文件被误删可能会导致 Docker 服务无法启动,本文将讲解 Docker 在遭遇误删的常见问题,并介绍如何恢复丢失的关键文件,需要的朋友可以参考下
    2025-10-10
  • Docker容器化部署Spring Boot项目实战指南(最新整理)

    Docker容器化部署Spring Boot项目实战指南(最新整理)

    本文给大家介绍Docker容器化部署Spring Boot项目实战指南,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-02-02

最新评论