CodeGym /课程 /Docker SELF /使用绑定

使用绑定

Docker SELF
第 19 级 , 课程 4
可用

5.1 绑定目录(bind mounts)的概念

通过绑定目录(bind mounts)将主机目录挂载到容器中是 Docker 的一个强大功能,它允许容器直接使用主机系统上的文件和目录。这对于开发、测试和配置特别有用,因为在无需将文件复制到容器的情况下就可以使用本地文件。在这节课里,我们会讨论如何使用绑定目录,并提供一些示例和最佳实践。

绑定目录允许将主机系统上的特定目录或文件挂载到容器中。这与由 Docker 管理并存储在专用目录中的 volumes (卷)不同。

使用绑定目录的优势

  1. 直接访问主机文件:容器可以直接使用和修改主机上的文件。
  2. 开发便利性:开发人员可以在主机上修改文件,并实时看到这些更改反映在容器中。
  3. 灵活性:主机上的任何目录都可以挂载到容器中。

挂载绑定目录的命令

绑定目录可以通过运行容器时使用 -v--mount 参数来挂载。

5.2 使用参数-v的示例

1. 挂载主机目录到容器

挂载主机目录到容器的最简单示例:

Terminal

docker run -d --name my_container -v /path/on/host:/path/in/container nginx

在这个示例中,主机上的目录/path/on/host被挂载到nginx容器内的目录/path/in/container

2. 挂载主机文件到容器

你也可以挂载单个文件:

Terminal

docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx

在这个示例中,主机上的配置文件config.conf被挂载为容器内的配置文件nginx.conf

5.3 使用参数 --mount 的示例

参数 --mount 提供了一种更详细的方式来挂载绑定的目录,并允许指定各种参数。

1. 使用 --mount 挂载目录

Terminal

docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx

这个示例和之前用 -v 的例子类似,但用的是更详细的语法。

2. 挂载为只读模式

Terminal

docker run -d --name my_container --mount 
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx

在这个示例中,目录以只读模式挂载,从而阻止对容器中文件的更改。

5.4 实际例子

为了开发web应用程序,你可以将主机上的源代码目录挂载到容器中。

在主机上创建源代码目录:

Terminal

mkdir -p ~/my_web_app
echo "你好, 世界!" > ~/my_web_app/index.html

挂载目录启动容器:

Terminal

docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx

现在对主机中目录 ~/my_web_app 的任何修改都会立即反映到容器中。

示例 2: 使用配置文件

你可以将主机目录中的配置文件挂载到容器中。

在主机上创建配置文件:

Terminal

echo "user www-data;" > ~/nginx.conf

echo "worker_processes auto;" >> ~/nginx.conf

挂载配置文件启动容器:

Terminal

docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx

在这个例子中,主机上的Nginx配置文件被用在容器中。

5.5 检查挂载的目录和文件

你可以使用 docker exec 命令检查挂载的目录和文件,在容器内执行命令。

示例

检查目录内容:

Terminal

docker exec -it my_container ls /path/in/container

检查文件内容:

Terminal

docker exec -it my_container cat /path/in/container/config.conf

删除绑定的目录

绑定的目录不直接由 Docker 管理,因此它们的删除在主机文件系统级别进行。

示例

在主机上删除绑定目录:

Terminal

rm -r /path/on/host
1
Опрос
在 Docker 中管理数据,  19 уровень,  4 лекция
недоступен
在 Docker 中管理数据
在 Docker 中管理数据
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION