2016-11-23 34 views
1

我对Docker和Containers完全陌生。我也是整个虚拟机概念的新手。如何更改Docker容器内的代码?

我知道VM和Dockers是一种使应用程序的所有依赖项作为单一组件提供的方式,您可以在支持它们的云上轻松部署该组件。

我在我的本地机器上安装了Docker(Ubuntu),我使用used this guide下载并运行Node官方映像。

我现在需要知道的是如何对Docker中的文件进行代码更改?我对应用内的'server.js'进行了更改,当我导航到http://locahost:49160时,浏览器仍显示旧的server.js的输出。我重新启动容器,但我得到相同的旧输出。

我看到我可以提交更改并制作新图片。但那么,不是旧的图像完全无用吗?

还是我根本不知道了解Docker的工作原理?

+0

我没有使用docker,但是当我在容器中进行更改时,它们仍然存在。 –

+0

哦..是否再次启动nodejs服务器时出现问题?因为我尝试过,而且失败了。 –

回答

3

您可以在容器内进行更改,甚至可以将这些更改提交到原始图像或创建新图像。

但我建议您创建一个新的图像或标签。

查看guide。当您想对server.js进行更改时,请执行此操作,但还要为其创建新映像。不要忘记添加标签(test1)。

例,docker build -t <your username>/node-web-app:test1 .

然后你可以运行与docker run -p 49160:8080 -d <your username>/node-web-app:test1

+0

好的,我会测试这个并让你知道。 –

+0

建立新的图像作品。应该多久构建一次图像? –

+1

每次你在你的代码中进行编辑并且想部署它。 – lvthillo

2

的新形象在你的情况。你可能需要重建你的形象:

docker build -t my-new-image . 

您做出了修改您的server.js这是你的图像/容器内复制。旧图像确实无用。构建完成后,您需要使用docker run开始一个新的容器。

在某些情况下,它可能对你的代码/数据与docker run -v my-local-volume:/volume-in container ...

安装到您的码头工人集装箱当你要修改您的密码在本地计算机将您的容器内自动更新。不更新图像或重新启动容器。但在你的情况下,你需要使用dockerfile的COPY命令复制应用程序中的代码。

+0

有没有办法不经常手动每次都复制代码? –

+0

我不知道nodejs很好。但我认为'问题'是npm安装是在图像内完成的(这可能取决于你的package.json - > server.js)。因此,如果可能的解决方案是创建一个startup.sh脚本,它将在容器启动时执行npm install + npm start(docker run with mount your code),而不是在映像内部执行此操作。 – lvthillo

+0

好的。我会测试并让你知道。 –

相关问题