如何在主机和Docker容器之间复制文件

354 阅读4分钟

如何在主机和Docker容器之间复制文件

如果你是使用Docker容器开发的新手,你会希望有一些小技巧在你的袖子里。Jack Wallen告诉你如何从主机复制文件到容器。

你的业务依赖于容器。如果现在没有,将来也会有。你的开发人员知道这一点,他们要么已经为这个任务做好准备,要么正在为它做准备。对于那些不知道的人来说,容器开发并不像标准应用开发那样简单。有了容器,就会有更多的活动部件参与进来,厨房里的厨师也会更多。

但是,一旦你确定了一个流程,它就可以顺利进行。为此,这完全是一个问题,即知道Docker容器是多么容易操作。例如,将文件从主机复制到运行中的容器的过程。这是很容易的。

你为什么要这样做?这其实很简单。一个开发者可能想在容器之外写代码(比如,在一个IDE中)。也可能有不止一个软件工程师在做这个项目,但团队中只有一个成员可以访问运行中的容器。在这种情况下,团队成员将分享他们的代码,然后领导需要把新的代码放到容器中。当然,领导可以剪切和粘贴,但为什么不直接用一个命令复制新文件呢?

让我告诉你这是如何做到的。

你将需要什么

要做到这一点,你需要一个正在运行的Docker实例和一个属于docker组成员的用户。就这样了。让我们开始使用我们的容器吧。

如何部署NGINX

我们将使用久经考验的NGINX容器来演示这一点。为什么呢?因为这是最容易看到这个复制命令的结果的方法。

首先,让我们部署NGINX容器。我们将把它部署在分离模式下,监听外部端口8080和内部端口80。我们的容器名称将是docker-nginx,并通过命令部署。

docker run --name docker-nginx -p 8080:80 -d nginx

一旦容器启动并运行,将网络浏览器指向http://SERVER:8080(其中SERVER是容器主机的IP地址)。你应该看到NGINX的欢迎页面(图A)

图A

我们正在运行的容器所显示的NGINX欢迎页面。

如何将文件复制到运行中的容器中

让我们为该容器创建一个新的欢迎页。用命令创建这个文件。

nano index.html

在该文件中,粘贴以下内容。

你好,TechRepublic

保存并关闭该文件。

现在,我们可以把新的索引文件复制到容器中。关于NGINX Docker容器需要知道的是,文档根(提供网页的目录)是/usr/share/nginx/html(而不是/var/www/html)。所以这就是我们的目的地。复制文件的命令是。

docker cp FILE CONTAINER:DESTINATION

其中FILE是要复制的文件名,CONTAINER是运行中的容器的名称,DESTINATION是容器中存放新文件的目录。在我们的例子中,该命令是

docker cp index.html docker-ngxin:/usr/share/nginx/html

在复制文件之后,刷新你的浏览器页面,欢迎页面现在应该是Hello, TechRepublic(图B)

图B

我们新的NGINX欢迎页已经被复制到运行的容器中。

你也可以使用同样的命令来复制整个目录。假设你已经创建了一个名为电子商务的新网站,你想把它复制到NGINX的文档根目录中。你可以用类似的命令来做这件事。

docker cp ecommerce docker-nginx:/usr/share/nginx/html

上述命令将复制该目录和它的所有内容。

这就是把文件和文件夹从主机复制到运行中的Docker容器的全部内容。

图片:o_m/Shutterstock

另请参阅