问题内容: 我正在试验Dockerfile,我想我了解大多数逻辑。但是,在这种情况下,我看不到“公开”和“发布”端口之间的区别。 我首先看过的所有教程都将命令包含在Dockerfile中: 然后,他们从此Dockerfile构建映像: 然后在运行映像时 发布 与上述相同的端口: 或使用以下命令发布所有端口 如果仍要发布端口,则在Dockerfile中公开端口有什么意义?是否需要先公开一个端口,然后
问题内容: 如何在Docker容器中运行GUI应用程序? 是否设置了任何图像或其他东西,例如,您可以在Firefox周围添加一个额外的speedbump沙箱? 问题答案: 您可以简单地与Firefox一起安装vncserver :) 我在这里推送了一个图像,vnc / firefox: 该镜像已使用以下Dockerfile生成: 这将创建一个运行VNC的Docker容器,密码为: 对于Docker
问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口
问题内容: 我设法在目录下找到了容器,但是找不到图像。 什么是目录和文件? 问题答案: 目录的内容根据Docker用于存储的驱动程序而有所不同。 默认情况下,这将是,但可以回落到,,,或者根据您的内核支持。在大多数地方,这是可以的,但是RedHats却接受了。 您可以使用Docker守护程序的或选项手动设置存储驱动程序。 将包含驱动程序特定的图像内容存储。 现在在和文件中仅包含有关图像的元数据。
问题内容: 创建新容器后,是否可以运行命令以从主机获取容器的IP地址? 基本上,一旦Docker创建了容器,我想滚动自己的代码部署和容器配置脚本。 问题答案: 该的选项就派上用场了。 现代Docker客户端语法为: 旧的Docker客户端语法为: 这些命令将返回Docker容器的IP地址。 如注释中所述:如果在Windows上,请在花括号周围使用双引号而不是单引号。
问题内容: 我正在尝试为我们使用的Docker容器构建备份和还原解决方案。 我已经创建了Docker基本映像,并且不想每次都使用Docker文件重建它来向其添加文件。 我想创建一个从主机运行的脚本,并使用Docker映像创建一个新容器,然后将文件复制到该容器中。 如何将文件从主机复制到容器? 问题答案: 该命令可用于复制文件。 可以将一个特定文件复制到容器中,例如: 可以从容器中复制一个特定文件,
问题内容: 如标题所示。我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。 问题答案: 正如@MichaelNeale注意到的那样,没有必要使用此方法(除非仅在构建时需要此IP),因为此IP将在构建时进行硬编码。
问题内容: 人们如何处理Docker容器的持久性存储? 我当前正在使用这种方法:构建映像(例如针对PostgreSQL),然后使用以下命令启动容器 恕我直言,这有一个缺点,我绝对不能(偶然)删除容器“ c0dbc34fd631”。 另一个想法是将主机卷“-v”安装到容器中,但是, 用户ID 的容器内不一定匹配 用户ID 从主机,然后权限可能会混乱。 注意:例如,您可以使用where 是分配给仅数据
问题内容: 如何使用Docker文件中的“ ADD”命令从Docker构建上下文之外包含文件? 从Docker文档中: 路径必须在构建上下文内;您不能添加../something/something,因为Docker构建的第一步是将上下文目录(和子目录)发送到docker守护程序。 我不想为了适应Docker而重组我的整个项目。我想将所有Docker文件保留在同一子目录中。 此外,似乎Docker
问题内容: 我是Docker的新手,目前尚不清楚如何从容器访问外部数据库。硬编码连接字符串的最佳方法是吗? 问题答案: 您可以使用该标志将环境变量传递到您的容器。 启动脚本的示例: 或者,如果您不希望在命令行中使用,等显示该值,则可以直接从当前环境中获取该值,如果您不带: 如果您有许多环境变量,尤其是要保密的话,可以使用env文件: --env-file标志将文件名作为参数,并期望每行采用VAR
问题内容: 我在后台运行一个容器 它迅速退出。但是,如果我在前台运行,则可以正常运行。我使用检查了日志 没有错误。有任何想法吗? DOCKERFILE start-all.sh 问题答案: 一个Docker容器的主要过程完成后退出。 在这种情况下,它将在脚本结束时退出。我对hadoop不太了解,无法在这种情况下告诉您如何做,但是您需要要么在前台运行某些东西,要么使用诸如runit或supervis
问题内容: 如何在不使用存储库的情况下将Docker映像从一台计算机转移到另一台计算机,无论是私有的还是公共的? 我在VirtualBox中创建自己的映像,完成后,我尝试部署到其他计算机上以实际使用。 由于它基于我自己的映像(例如Red Hat Linux),因此无法从Dockerfile重新创建它。我的dockerfile不容易移植。 我可以使用简单的命令吗?还是其他解决方案? 问题答案: 您将
问题内容: 我在Ubuntu 13.10(Saucy Salamander)上安装了Docker,并在控制台中键入了以下命令: 我收到以下错误: Docker版本: 我在没有身份验证的代理服务器后面,这是我的文件: 我究竟做错了什么? 问题答案: 这是代理HTTP的官方Docker文档的链接:https : //docs.docker.com/config/daemon/systemd/#http
问题内容: 我正在考虑使用Docker在持续集成(CI)服务器上构建我的依赖项,这样我就不必在代理程序本身上安装所有运行时和库。 为此,我需要将容器内部构建的构建工件复制回主机。那可能吗? 问题答案: 为了将文件从容器复制到主机,可以使用以下命令 这是一个例子: 这里 goofy_roentgen 是我从以下命令获得的容器名称: 您还可以使用(部分) 容器ID 。以下命令等效于第一个
问题内容: 原始问题:如何在Dockerfile中使用VOLUME指令? 我要解决的实际问题是-如何在构建期间将主机卷挂载到Dockerfile中的Docker容器中,即在期间具有该功能。 对我而言,其背后的原因是在Docker中构建东西时,我不希望将()缓存锁定在单个Docker中,而是共享/重用它们。这就是我问这个问题的主要原因。 最近更新: 在docker v18.09之前,正确的答案应该是