实践记录-docker-step6-7/10-参考docker官网步骤操作记录-绑定挂载-多容器

参考来源:
(应用的容器化实践)docker官方入门指南 https://docs.docker.com/get-started/

本指南包含有关如何开始使用 Docker 的分步说明。本指南介绍如何:
将映像作为容器生成并运行。
使用 Docker Hub 共享映像。
使用带有数据库的多个容器部署 Docker 应用程序。
使用 Docker Compose 运行应用程序。

step6 使用绑定挂载

目录 table of contents

·快速卷类型比较 comparisons
·试用绑定挂载
·开发容器
·在开发容器中运行应用
·使用开发容器开发应用

在第 5 部分中,您使用卷装载将数据保存在数据库中。当您需要持久性位置来存储应用程序数据时,卷装载是一个不错的选择。

绑定挂载是另一种类型的挂载,它允许您将主机文件系统中的目录共享到容器中。在处理应用程序时,可以使用绑定挂载将源代码挂载到容器中。一旦你保存文件,容器就会立即看到你对代码所做的更改。这意味着您可以在容器中运行进程来监视文件系统更改并响应它们。

在本章中,您将了解如何使用绑定挂载和名为 nodemon 的工具来监视文件更改,然后自动重新启动应用程序。在大多数其他语言和框架中都有等效的工具。

快速卷类型比较

以下是使用以下 --mount 方法的命名卷和绑定挂载的示例:

命名卷

命名卷: type=volume,src=my-volume,target=/usr/local/data
绑定安装: type=bind,src=/path/to/data,target=/usr/local/data

下表概述了卷装载和绑定装载之间的主要区别。
在这里插入图片描述

试用绑定挂载

在了解如何使用绑定挂载开发应用程序之前,您可以运行一个快速实验(最小功能单元-红细胞),以实际了解绑定挂载的工作原理。

  1. 验证您的 getting-started-app 目录是否位于 Docker Desktop 的文件共享设置中定义的目录中。此设置定义了可以与容器共享文件系统的哪些部分。有关访问该设置的详细信息,请参阅适用于 Mac、Windows 或 Linux 的主题。
  2. 打开终端并将目录更改为该 getting-started-app 目录
  3. 运行以下命令,在具有绑定挂载的 ubuntu 容器中启动 bash 。
docker run -it --mount type=bind,src="$(pwd)",target=/src ubuntu bash
  1. 运行命令后,Docker 会在容器文件系统的根目录中启动交互 bash 式会话
root@ac1237fad8db:/# pwd
/
root@ac1237fad8db:/# ls
bin   dev  home  media  opt   root  sbin  srv  tmp  var
boot  etc  lib   mnt    proc  run   src   sys  usr
  1. 将目录更改为 src 目录。
    这是您在启动容器时挂载的目录。列出此目录的内容将显示与主机上目录 getting-started-app 中的文件相同的文件。
root@ac1237fad8db:/# cd src
root@ac1237fad8db:/src# ls
Dockerfile  node_modules  package.json  spec  src  yarn.lock
  1. 创建一个名为 myfile.txt 的新文件
root@ac1237fad8db:/src# touch myfile.txt
root@ac1237fad8db:/src# ls
Dockerfile  myfile.txt  node_modules  package.json  spec  src  yarn.lock
  1. 打开主机上的 getting-started-app 目录,并观察 myfile.txt 文件是否在目录中。
├── getting-started-app/
│ ├── Dockerfile
│ ├── myfile.txt
│ ├── node_modules/
│ ├── package.json
│ ├── spec/
│ ├── src/
│ └── yarn.lock
root@ub1804:/home/xiaoyue/workdir/dockerdir/getting-started-app# ls
Dockerfile  node_modules  README.md  src             yarn.lock
myfile.txt  package.json  spec       yarn-error.log
  1. 从主机中删除文件 myfile.txt 。
  2. 在容器中,再次列出 app 目录的内容。观察文件现在不见了。
root@ac1237fad8db:/src# ls
Dockerfile  node_modules  package.json  spec  src  yarn.lock

以上就是绑定挂载的简要介绍。此过程演示了如何在主机和容器之间共享文件,以及如何立即在两端反映更改。现在,您可以使用绑定挂载来开发软件。

开发容器

使用绑定挂载在本地开发设置中很常见。优点是开发计算机不需要安装所有生成工具和环境。使用单个 docker run 命令,Docker 会拉取依赖项和工具。

在开发容器中运行应用

以下步骤介绍如何使用执行以下操作的绑定装载运行开发容器:
将源代码装载到容器中
安装所有依赖项
开始 nodemon 监视文件系统更改

可以使用 CLI 或 Docker Desktop 运行具有绑定挂载的容器
1.确保当前没有任何 getting-started 正在运行的容器。
2.从 getting-started-app 目录中运行以下命令。

docker run -dp 127.0.0.1:3000:3000 \
    -w /app --mount type=bind,src="$(pwd)",target=/app \
    node:18-alpine \
    sh -c "yarn install && yarn run dev"

以下是该命令的细分:
-dp 127.0.0.1:3000:3000 - 和以前一样。在分离(后台)模式下运行并创建端口映射
-w /app - 设置“工作目录”或运行命令的当前目录
–mount type=bind,src=“$(pwd)”,target=/app - 绑定将主机中的当前目录挂载到容器中的 /app 目录中
node:18-alpine - 要使用的图像。请注意,这是 Dockerfile 中应用的基础映像
sh -c “yarn install && yarn run dev” - 命令。您正在使用 sh (alpine 没有 bash ) 启动一个 shell,然后运行 yarn install 以安装包,然后运行 yarn run dev 以启动开发服务器。如果查看 package.json ,您将看到 dev 脚本开始 nodemon 。

3.您可以使用 docker logs .当你看到这个时,你就会知道你已经准备好了:

docker logs -f <container-id>
nodemon -L src/index.js
[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/index.js`
Using sqlite database at /etc/todos/todo.db
Listening on port 3000

看完日志后,按 Ctrl + C 退出。

------>个人实践故障处理

root@ub1804:/home/xiao
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值