问题标签 [docker-engine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1506 浏览

docker - docker 容器是否与主机操作系统完全隔离?

当我与人们交谈并阅读有关容器的文章时,我听到了 docker 容器彼此隔离的定义,以及与主机隔离的定义。

但是我想问一下,这种情况下的隔离级别到底是什么,它是完全与主机或其操作系统隔离的,还是有一些共享资源?如果是完全隔离的,那么它怎么这么小又轻呢?

0 投票
1 回答
3470 浏览

java - 使用 Docker 和 Kubernetes 进行日志记录。超过 16k 的日志被拆分

我正在使用 Docker 版本 17.12.1-ce Kubernetes 版本 v1.10.11

我的应用程序将 Json 格式的日志打印到控制台。其中一个字段是 stackTrace,它可以包含一个巨大的 stackTrace。

问题是日志消息被分成两条消息。因此,如果我查看 /var/lib/docker/containers/ ... .log 我会看到两条消息。我读到这是出于安全原因,但我真的不明白我能用它做什么?

我应该削减我的堆栈跟踪吗?还是自定义尺寸?这是允许的吗?这是处理这个问题的正确方法吗?

p/s 我正在使用 json 文件日志记录驱动程序

0 投票
2 回答
3871 浏览

docker - docker 中 Windows 上的 gitlab-runner 无法运行并出现错误的 OSType 错误

我在启用了 Hyper-V 的 Windows Server 上有一个 gitlab-runner。

使用暴露于网络的 docker API,我可以运行 linux docker 容器,甚至可以使用 docker:latest 运行 docker 本身。

所以这似乎都是正确的。

当我现在想docker-compose up -d在部署阶段运行 a 时,我会从 gitlab-runner 得到一个错误

我也许可以直接在主机上运行 gitlab-runner,而是将所有东西都放在存储库中,只需要安装 docker。

0 投票
0 回答
58 浏览

python-3.x - Docker-py 客户端给出“无效的客户端端口规范”

我正在使用 docker-py 客户端根据需要创建容器。因此,为此,我使用生成器来提供端口号,并尝试在生成器的主机特定端口上使用 httpd 映像。但是,对于任何数字,对于我尝试使用的任何端口号,客户端都会给出(“无效的端口规范:”此处的端口号“”)。

下面是我正在尝试的示例代码:

注意:数字 43545 在这里没有任何意义。

码头工人详情:

  1. 客户端 - 19.03.6
  2. API 版本 - 1.40
  3. 引擎:19.03.6

错误:

0 投票
0 回答
82 浏览

api - Docker 引擎 api 创建具有特权模式的容器

我正在使用 docker engine api 来构建图像,然后创建并运行容器。我需要的是运行带有--privileged标志的容器。但我在 docker engine api 参考文档中看不到任何内容。

https://docs.docker.com/engine/api/v1.40/#operation/ContainerCreate

如何使用 docker engine api 启动具有特权标志的容器?

0 投票
1 回答
234 浏览

docker - 为什么需要 Docker 多架构(而不是 Docker 引擎抽象差异)

精简版

我想知道为什么需要为多种架构创建 Docker 镜像的技术原因。此外,尚不清楚这里的重点是为每个 CPU 架构还是为操作系统创建映像。操作系统不应该抽象架构吗?

长版

我可以理解为什么 Docker Engine 必须移植到多个架构。它是一个将与操作系统交互、进行系统调用的软件,最终它只是表示为特定指令集中的一系列指令的代码,用于特定的架构。因此,必须将 Docker 引擎移植到多个操作系统/体系结构,就像必须移植 Microsoft Word 一样。

同样的事情也会发生在——比如说——JVM,或者VirtualBox。

但是,与 Docker 不同的是,为 Windows 上的 JVM 编写的软件可以在 Linux 上运行。JVM 将抽象底层操作系统/架构的差异,并在两个平台上运行相同的代码。

为什么 Docker 映像不是这种情况?为什么 Docker 引擎不能仅仅抽象出差异,并提供一个通用的接口,这样镜像本身就不需要与特定的操作系统/架构兼容?

这是一个决定(比如“让我们为每个架构制作不同的图像,因为它对于原因 X 更好”),还是 Docker 工作方式的结果(比如“我们需要这样做,因为 Docker 需要 Y”)?

笔记

  • 我不是在哭“天哪,为什么??”。这不是咆哮或批评,我只是在为不同架构需要不同图像寻找技术解释。
  • 我不是在问如何创建多架构图像。
  • 我不是在寻找诸如“需要多架构图像以便您可以在各种平台上运行图像”之类的答案,而是回答“为什么?”,而不是“为什么需要这样?” (这是我的问题)。

除此之外,当您看到图像时,它通常os/arch在摘要中有一个,如下所示:

码头工人图像摘要

图片的具体目标是什么?操作系统、架构,还是两者兼而有之?操作系统不应该抽象底层架构吗?


编辑:我开始假设每个架构都需要不同的图像:图像将包含其中的应用程序。假设它将包含 Go 编译器。Go 编译器本身是一个二进制文件,必须已经编译到不同的架构。的图像x86-64将包含编译为的 Go 编译器x86-64,依此类推。这个对吗?如果这是正确的,这是唯一的原因吗?

0 投票
1 回答
102 浏览

docker - Docker 卷持久性

我正在努力学习 Docker。我已经在我的 Windows10 Pro 计算机上安装了 Docker Desktop。

我开始使用 Docker 建立和运行 PHP、MySQL 网站。

我的 docker-compose.yml 看起来像

和 DockerFile 看起来像

我有一个带有index.php的www文件夹。

当我跑

我的 PHP、mySQL 站点启动并正常运行,我可以访问 index.php 并获得预期结果。

到现在为止还挺好。

现在,我想更改 Dockerfile 以设置一个 php 论坛网站 (phpbb) - 所以我更新了我的 Dockerfile,如下所示:

当我跑

我可以看到预期的结果 - 即“ls”命令在 /var/www/html 中显示所有预期的 phpBB 文件

但是,当我跑步时

我的容器只有/var/www/html 中的index.php (www 文件夹中的index.php)。没有任何 phpBB 文件存在。

我究竟做错了什么?

0 投票
1 回答
581 浏览

docker - 可以用 Docker Machine 管理 MacOS Docker 桌面吗?

我在我的 Mac 上安装了 Docker Desktop(不是 Docker Toolkit),并根据官方文档安装了 docker-machine

我正在尝试将我的 localhost Docker 引擎添加为 docker 机器下的 docker 节点,但没有成功。

我所做的步骤是:

  1. 在 localhost 中启用 sshd(ssh localhost有效)

  2. 将 localhost Docker 添加到 Docker 机器:

的输出docker-machine ls

对不起我的英语,我不是本地人。

0 投票
1 回答
3276 浏览

docker - Docker 通过 ssh 连接到远程守护进程 - 权限被拒绝(公钥)

我在连接到远程(DigitalOcean)docker 引擎时遇到问题。我所做的是

  1. 在 Ubuntu 20.04 上使用 Docker 19.03.12 制作了一个 droplet。
  2. 创建一个新用户 myuser 并添加到远程主机上的 docker 组。
  3. 为新用户创建了一个 .ssh/authorized_keys 并设置了权限、所有者等。
  4. 重新启动 ssh 和 docker 服务。

结果

  1. 我可以使用 myuser 从我的 Mac 笔记本 ssh 到我的远程主机。(当我运行 ssh 钥匙串时,要求输入 id_rsa.key 的密码。)
  2. 通过 ssh 登录到远程主机后,我可以运行 docker ps, docker info 没有任何问题。

问题

在为远程引擎创建新上下文之前,我尝试在我的 Mac 笔记本电脑上从本地客户端运行一些 docker 命令。对我来说有趣的部分是以下命令都不需要 id_rsa 密码)

  1. docker -H ssh://myuser@droplet_ip ps-> 错误
  2. DOCKER_HOST=ssh://myuser@droplet_ip docker ps-> 错误

错误

我错过了哪一步?如何连接到远程 docker 引擎?

0 投票
0 回答
173 浏览

docker - 在 Linux 上增加对 docker daemon (dockerd) 的内存分配

在 macOS 或 Windows 上使用 Docker 时,我们可以设置分配给 Docker 守护进程的内存量(默认为 2GB)。我的问题是在 Linux(Ubuntu 20.04.1)上也有这样的设置,或者 docker 守护程序是否可以在 Linux 环境中免费使用尽可能多的内存。

我在读到我们可以使用 /etc/docker/daemon.json 文件控制 dockerd 的一些配置,但没有内存分配的示例。