您可以在Docker容器中运行Linux和Windows程序以及可执行文件。Docker平台在Linux(x86-64,ARM和许多其他CPU架构)和Windows(x86-64)上本地运行。
Docker Inc.构建的产品可让您在Linux,Windows和macOS上构建和运行容器。
Docker技术不能替代LXC。“ LXC”是指Linux内核(特别是名称空间和控制组)的功能,这些功能允许彼此进行沙盒处理并控制其资源分配。在此低级内核功能基础之上,Docker提供了具有多种强大功能的高级工具:
lxc
帮助程序脚本将容器作为轻量级机器集中在容器上-基本上是启动速度更快且需要较少RAM的服务器。我们认为容器不仅限于此。make
,maven
, chef
,puppet
,salt,
Debian软件包,RPM包,源码包,或任意组合以上内容,无论机器的配置如何。git pull
因此可以仅通过发送差异来传输容器的新版本。有一个很棒的StackOverflow答案显示了差异。
一点也不!您的应用程序写入磁盘的所有数据都会保留在其容器中,直到您明确删除该容器为止。即使在容器停止后,该容器的文件系统仍然存在。
当今世界上一些 null 大的服务器场都是基于容器的。诸如Google和Twitter之类的大型Web部署以及诸如Heroku之类的平台提供商都基于容器技术运行,其规模为数十万甚至数百万个容器。
当前,推荐的连接容器的方法是通过Docker网络功能。您可以查看有关如何使用Docker网络的详细信息。
对于大多数用例,不建议使用此方法。为了获得 null 大的效率和隔离度,每个容器应解决一个特定的关注领域。但是,如果需要在单个容器中运行多个服务,请参阅 在容器中运行多个服务。
您可以在此处了解项目的安全策略 ,并向此邮箱报告安全问题 。
阅读有关DCO简介的博客文章。
这是关于docker-dev邮件列表的讨论的摘要。
实际上,所有程序都依赖于第三方库。大多数情况下,它们使用动态链接和某种程序包依赖性,因此,当多个程序需要同一个库时,该库仅安装一次。
但是,某些程序会捆绑其第三方库,因为它们依赖于这些库的非常特定的版本。
创建Docker映像时, null 好使用捆绑的库,还是应该构建这些程序以使它们使用默认的系统库?
有关系统库的关键不是节省磁盘或内存空间。这是关于安全性。所有主要发行版都拥有专门的安全团队,密切关注已发布的漏洞,并自行发布公告,从而认真地处理安全问题。( 有关这些过程的示例,请参见Debian安全信息。)但是,上游开发人员并不总是实现类似的做法。
在设置Docker映像以从源代码编译程序之前,如果要使用捆绑库,则应检查上游作者是否提供了便捷的方式来宣布安全漏洞,以及他们是否及时更新了捆绑库。如果他们没有这样做,那么您正在使自己(和图像的用户)面临安全漏洞。
同样,在使用他人构建的软件包之前,您应检查提供这些软件包的渠道是否实施了类似的安全 null 佳实践。首先,下载并安装“多合一” .deb或.rpm听起来很不错,除非您无法确定它包含容易受到Heartbleed错误影响的OpenSSL库的副本。
DEBIAN_FRONTEND=noninteractive
不鼓励使用Dockerfiles?在Debian和Ubuntu上构建Docker映像时,您可能会看到以下错误:
unable to initialize frontend: Dialog
这些错误不会阻止映像的生成,但是会通知您安装过程试图打开一个对话框,但没有成功。通常,可以安全地忽略这些错误。
有人通过使用以下方法更改DEBIAN_FRONTEND
Dockerfile中的环境变量来规避这些错误:
ENV DEBIAN_FRONTEND=noninteractive
这样可以防止安装程序在安装过程中打开对话框,从而停止错误。
虽然这听起来像是个好主意,但可能会有副作用。该 DEBIAN_FRONTEND
环境变量是由从图像中内置所有图像和容器继承,有效地改变他们的行为。在交互式安装软件时,使用这些映像的人会遇到问题,因为安装程序不会显示任何对话框。
正因为如此,而且由于设置DEBIAN_FRONTEND
来noninteractive
主要是“美容”的变化,我们不鼓励改变它。
如果确实需要更改其设置,请确保 之后将其更改回其 默认值。
Connection reset by peer
向容器中运行的服务发出请求时为什么会得到提示?通常,如果服务已绑定到您的本地主机,则会返回此消息。结果,从外部进入容器的请求被丢弃。若要更正此问题,请在本地主机上更改服务的配置,以便该服务接受来自所有IP的请求。如果不确定如何执行此操作,请查看操作系统的文档。
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
在使用docker-machine时会出现问题?该错误指出,Docker客户端无法连接到虚拟机。这意味着在其下工作的虚拟机docker-machine
未运行,或者客户端未正确指向该虚拟机 。
要验证Docker计算机是否正在运行,您可以使用docker-machine ls
命令并docker-machine start
根据需要启动它。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown
$ docker-machine start default
您需要告诉Docker与该机器对话。您可以使用docker-machine env
命令执行此操作 。例如,
$ eval "$(docker-machine env default)"
$ docker ps