在Dockerfiles中有两个看起来与我类似的命令:CMD
和ENTRYPOINT
.但是我猜它们之间存在着一种(微妙的?)差异 - 否则对于同样的事情来说两个命令就没有任何意义.
文档说明了 CMD
CMD的主要目的是为执行容器提供默认值.
并为ENTRYPOINT
:
ENTRYPOINT可帮助您配置可作为可执行文件运行的容器.
那么,这两个命令之间的区别是什么?
Docker中的容器和图像有什么区别?在入门Docker教程中,这些术语都被使用,但我不明白其中的区别.
任何人都可以解释一下吗?
假设我有一个我想要标记的图像0.10.24
(在我的例子中,它是一个包含Node.js 0.10.24的图像).我使用Dockerfile构建该图像并执行docker build
并使用-t
参数提供标记.
我希望有一天我会有该图像的其他版本,所以我将重新运行该过程,只需使用另一个标记名称.
到现在为止还挺好.这很好,很好,一切都很好.
但是,这就是问题开始的地方,我还希望latest
另外还有最新的图像标记广告.所以我想我需要给同一个图像赋予两个名字.
我该怎么做呢?我是否真的需要重新运行docker build
完全相同的版本,但这次使用另一个标签,是否有更好的选择?
我正在使用Vagrant在Windows中启动VirtualBox VM.在其他平台上,我可以
$ vagrant ssh
Run Code Online (Sandbox Code Playgroud)
连接到VM.
如何在Windows中连接到此Vagrant框?
在Vagrant文档中建议使用PuTTy的方式也不起作用:
http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html
假设我的主机上有一个Docker容器和一个文件夹/hostFolder
.现在,如果我要对这个文件夹添加到多克尔容器的体积,那么我可以通过使用这样做ADD
在Dockerfile
或安装它作为一个音量.
到现在为止还挺好.
现在/hostFolder
包含一个子文件夹/hostFolder/subFolder
.
我想挂载/hostFolder
到泊坞容器(无论是读写或只读并不重要,无论是对我的作品),但我不希望把它列入/hostFolder/subFolder
.我想排除这个,我也希望Docker容器能够对这个子文件夹进行更改,而不会在主机上更改它.
这可能吗?如果是这样,怎么样?
我有一个使用Node.js和Express构建的Web应用程序.现在我想用适当的方法列出所有注册的路线.
例如,如果我已经执行了
app.get('/', function (...) { ... });
app.get('/foo/:id', function (...) { ... });
app.post('/foo/:id', function (...) { ... });
Run Code Online (Sandbox Code Playgroud)
我想检索一个对象(或类似的对象),例如:
{
get: [ '/', '/foo/:id' ],
post: [ '/foo/:id' ]
}
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是的话,怎么样?
更新:同时,我创建了一个名为get-routes的npm包,它从给定的应用程序中提取路由,解决了这个问题.目前,仅支持Express 4.x,但我想现在这很好.仅供参考.
假设我已经为Node.js编写了一个模块,我想保密.我知道我可以(应该)添加这一行:
"private": "true"
Run Code Online (Sandbox Code Playgroud)
到package.json
文件,我也知道我可以npm install
使用文件系统路径或git存储库的链接,包括GitHub.
我也知道我可以将这样的文件系统路径或链接到git repo中package.json
,这样该dependencies
部分可能看起来像这样:
"dependencies": {
"myprivatemodule": "git@github.com:..."
}
Run Code Online (Sandbox Code Playgroud)
我现在想要的不是链接到最新版本,而是链接到特定版本.我知道的唯一可能是使用其ID链接到特定的提交.但是这比使用诸如的版本号更不易读,也更难以维护0.3.1
.
所以我的问题是:是否有可能指定这样的版本号并使npm搜索git存储库以获取包含此版本的最新提交?
如果没有,您如何在项目中解决此问题?您是否使用提交ID或者是否有更好的解决方案?
假设我编写了一个Node.js应用程序,现在我想分发它.当然,我想让用户轻松,因此我不希望他安装Node.js,运行npm install
然后手动输入node app.js
.
我更喜欢的是单个可执行文件,例如.exe
Windows上的文件.
我怎么能接近这个?
我知道这个帖子,无论如何这只是关于Windows.我怎样才能以独立于平台的方式实现这一目标?有任何想法吗?最佳做法?...?
完美的解决方案是我可以提供源文件夹的"编译器".源文件夹包含应用程序本身的各种.js
文件,node_modules
文件夹和一些元数据,如package.json
.输出应该是各种平台的二进制文件,例如Windows,OS X和Linux.
哦,重要的是:我不想对源代码进行任何更改,因此require
使用相对路径调用应该仍然有效,即使此相对路径现在位于打包的应用程序中.
有任何想法吗?
PS:我不希望用户独立安装Node.js,它也应该包含在可执行文件中.
正如关于使用卷的Docker文档中所描述的那样,所谓的仅数据容器的概念,无论仅数据容器是否实际运行,它都提供可以挂载到多个其他容器的卷.
基本上,这听起来很棒.但有一件事我不明白.
这些卷(由于可移植性原因而未显式映射到主机上的文件夹,如文档所述)由Docker在host(/var/docker/volumes/…
)上的某个内部文件夹中创建和管理.
假设我使用这样的卷,然后我需要将它从一个主机迁移到另一个主机 - 如何移植卷?AFAICS它有一个唯一的ID - 我可以将卷及其仅数据容器复制到新主机吗?如何找出要复制的文件?或者是否有一些内置于Docker的支持我还没有发现?
ng-pristine
和之间有什么区别ng-dirty
?看起来你可以两个都是true
:
$scope.myForm.$pristine = true; // after editing the form
Run Code Online (Sandbox Code Playgroud) docker ×5
node.js ×3
angularjs ×1
deployment ×1
dockerfile ×1
express ×1
npm ×1
ssh ×1
tags ×1
terminology ×1
vagrant ×1
virtualbox ×1
windows ×1