介绍
通常,Docker 容器只运行特定的一段时间 – 即运行命令所需的时间。容器内可用的数据只能在运行期间从容器内部访问。
Docker 数据卷 可用于轻松访问文件并将其存储更长时间。例如,如果您有一个 Nginx Web 服务器,并且想要存储日志以进行审计,则可以使用 Docker 数据卷将容器中的日志存储在宿主机中。
在本教程中,您将学习如何在 Docker 容器内部与宿主机之间共享数据。
前提条件
对于本教程,您需要满足以下前提条件:
- Ubuntu 18.04 服务器:您可以轻松地按照我们实用的教程,使用 Ubuntu 18.04 镜像创建一个新的 CloudSigma 服务器.
- Docker – 您可以使用我们关于如何在 Ubuntu 上设置 Docker 的教程来安装 Docker 并熟悉它。
步骤 1 – 绑定挂载数据卷
您可以在当前用户的家目录中创建一个名为 logs 的目录,并将其绑定挂载到 /var/log/nginx(在 Nginx 容器中),使用以下命令:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
以下是关于该命令的更详细信息:
--name=nginx为容器命名,以便于引用。-d参数使进程分离并在后台运行。-v hostPath:containerPath映射宿主机路径和容器路径以进行绑定挂载。-p hostPort:containerPort参数将容器的端口映射到宿主机端口。nginx在行尾是用于启动容器的镜像名称。
步骤 2 – 访问宿主机上的数据
现在,您的服务器上运行着一个 Nginx 容器,并且服务器的 5000 端口映射到 Nginx 的 80 端口。您可以在浏览器中通过以下 URL 打开该端口:
|
1 |
http://serverIP:5000/ |

在 ~/logs 目录中,您将看到 access.log 和 error.log 文件。您可以使用 cat 命令查看日志:
|
1 |
cat access.log |
|
1 2 3 |
Output: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
您也可以检查宿主机上的日志目录 ~/logs 并找到 Nginx 的日志文件。此外,如果您在 logs 文件夹中进行任何更改,这些更改也会反映在容器的 /var/log/nginx 文件夹中。
结论
在本教程中,您学习了如何在 Docker 容器内部与宿主机之间共享数据。这在开发环境中至关重要,因为分析日志是调试的必经之路。
有关我们博客上关于 Docker 的更多资源,我们的博客,您可以查看以下内容:
- 如何在公共云中的 Ubuntu 上安装 & 操作 Docker
- 在 CentOS 7 上安装和设置 Docker
- 清理 Docker 资源 – 镜像、容器和数据卷
- 如何在 CloudSigma 上运行 Docker(使用 CloudInit)更新版
祝您计算愉快!
评论
暂无评论。发表第一条评论吧。