如何在主机和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
另请参阅
- 如何在Ubuntu服务器20.04上安装Nextcloud 22 (TechRepublic)
- 如何在Docker容器中定义DNS (TechRepublic)
- 听听TechRepublic的动态开发者播客 (TechRepublic)
- 如何成为一名开发者。一张小抄 (TechRepublic)
- 5种编程语言应用解决方案开发人员应该学习(免费PDF) (TechRepublic)
- 开源索引和GitHub项目检查表指南 (TechRepublic Premium)
- 编程语言和开发者职业资源 (TechRepublic on Flipboard)