我已在使用 Hyper-V 的 Windows 10 计算机上安装了 Docker for Windows。安装的默认 VM 是 MobyLinuxVM。为了更改一些设置,我关闭并重新启动了虚拟机。但在那之后,Docker 就不再工作了。
在 Powershell 中:
PS C:\Windows\system32> docker info
Error response from daemon: Bad response from Docker engine
Run Code Online (Sandbox Code Playgroud)
在日志中:
[13:18:03.963][ApiProxy ][Info ] proxy >> GET /_ping
[13:18:03.963][ApiProxy ][Info ] Dial Hyper-V socket SOME-GUID
[13:18:03.969][ApiProxy ][Info ] Successfully dialed Hyper-V socket SOME-GUID
[13:18:03.973][ApiProxy ][Info ] error reading response from Docker: HvSocket has already been closed
[13:18:03.973][ApiProxy ][Info ] proxy >> GET /v1.26/info
[13:18:03.973][ApiProxy ][Info ] Dial Hyper-V socket SOME-GUID
[13:18:03.974][ApiProxy …Run Code Online (Sandbox Code Playgroud) hyper-v virtual-machine docker windows-10 docker-for-windows
背景:
我正在寻找创建一个可以运行 opengl 的 docker 映像。
为此,我按照此处找到的步骤进行操作,这非常有效。
问题在于,说明建议使用 dockerprivileged模式,该模式为 docker 容器提供所有Linux 功能。
我想替换privileged为运行 DRI 所需的确切功能,并且仅替换这些功能。
问题是我不知道它们是什么,也不知道有什么方法可以检索它们。
我正在尝试在 Docker 内使用ksm_preload for Apache。问题是在 Docker 中运行时该库没有被映射。在外面它可以工作,我看到共享/易失性页面。我认为问题出在 apache 中的某个地方,因为在具有相同 LD_PRELOAD 参数的同一容器中运行的其他应用程序(如 apt)显示 KSM 中的活动。
运行 make install 后,我在 docker 容器内尝试了以下操作
LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so apache2ctl -k start -D FOREGROUND
Run Code Online (Sandbox Code Playgroud)
我还尝试设置/etc/apache2/envvars工作进程:
export LD_DEBUG=all
export LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so
Run Code Online (Sandbox Code Playgroud)
父进程获取映射的库,但子工作进程则不获取。
父进程的/proc/pid/map_files:
7f2e13aef000-7f2e13af1000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13af1000-7f2e13cf0000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13cf0000-7f2e13cf1000 -> /usr/local/share/ksm_preload/libksm_preload.so
Run Code Online (Sandbox Code Playgroud)
总是出现以下结果:
/sys/kernel/mm/ksm/pages_shared:0
/sys/kernel/mm/ksm/pages_sharing:0
/sys/kernel/mm/ksm/pages_to_scan:100
/sys/kernel/mm/ksm/pages_unshared:0
/sys/kernel/mm/ksm/pages_volatile:0
/sys/kernel/mm/ksm/run:1
Run Code Online (Sandbox Code Playgroud)
LD 调试输出相当长https://pastebin.com/KRvKHXxn
apache 有某种针对 LD_PRELOAD 的保护吗?
是否可能有另一个具有更高优先级的动态库覆盖符号?
也许相关:/sf/ask/936196831/
尝试了解决方案UNSET_RTLD_DEEPBIND=1,没有变化
在我的文件中,Dockerfile我有安装命令mysql-server:
RUN apt-get install -y mysql-server
Run Code Online (Sandbox Code Playgroud)
当我输入 root 密码时出现问题。我按 Enter 键,但没有任何反应,安装被卡住了。
我使用 docker-compose 运行一小群容器来支持应用程序。使用 Docker 的内部 DNS 解析器(例如db解析到数据库后端容器)是其中的关键。我使用使用创建的专用桥接网络docker network。
我想知道是否有一种简单直接的方法,无需 Kubernetes 等官僚机构,即可利用 DNS 发现机制,同时将容器分散到多个物理服务器上。一种选择是简单地在另一台服务器上构建单独的 Docker 安装和专用网络,并让这些容器在启动时在我的 PowerDNS 服务器中更新自己的 DNS 条目,并且有一个现有的机制可以实现这一点。然而,我非常喜欢利用 Docker 的内部 DNS 发现。
任何指示将不胜感激!
我最初在 Stack Overflow 上问过这个问题,但我认为超级用户可能更合适。
我在 WSL(Linux 的 Windows 子系统,Ubuntu 16.04)上使用 Docker 时遇到了最奇怪的情况。我试图将安装/home/username(或只是$HOME为了方便)绑定为容器中的卷,而不是在容器中查找我的主目录的内容,而是完全获得一些其他卷。
奇怪的是,每当我尝试绑定 mount$HOME或/home/username. 如果我触摸一个新文件,它会出现在我安装到的所有其他容器中$HOME。所有其他绑定安装到任何其他目录都可以正常工作。
例如,这些都共享同一个神秘文件夹:
docker run -it --rm -v /home/username:/test alpine sh
docker run -it --rm -v $HOME:/test alpine sh
docker run -it --rm -v $HOME:/test -v $HOME:/test2 alpine sh
Run Code Online (Sandbox Code Playgroud)
当我执行 a 时,docker volume ls没有名为 的卷/home/username,因此排除了意外拥有同名的 docker 托管卷的情况。
我正在安装的这个神秘卷是什么,为什么 docker 没有$HOME正确安装我的目录?
我想在 EC2(Microsoft Windows Server 2019 Base - ami-0eaa025a752a23c5b)上创建一个可以同时运行 Windows 容器和 Linux 容器的虚拟机。我知道 WSL 2 可以支持 docker 容器并在 Windows 10 Build 18917 上运行。我不确定它是否可以在 Windows Server 2019 上运行。如果可以,我应该使用 Windows Server 2019 的哪个版本。任何帮助,将不胜感激。
linux windows-server amazon-ec2 docker windows-subsystem-for-linux
如何保存 Grafana 容器的仪表板 YAML,以便在创建时加载?
docker-compose.yml:
grafana:
image: grafana/grafana
container_name: grafana
volumes:
- ./grafana-datasource.yml:/etc/grafana/provisioning/datasources/datasource.yaml
- ./dashboard.yml:/etc/grafana/provisioning/dashboards/dashboard.yaml
- ./grafana/provisioning/dashboards/:/etc/grafana/provisioning/dashboards/
ports:
- "3000:3000"
depends_on:
- prometheus
Run Code Online (Sandbox Code Playgroud)
仪表板.yml:
apiVersion: 1
providers:
# <string> an unique provider name
- name: 'a unique provider name'
# <int> org id. will default to orgId 1 if not specified
orgId: 1
# <string, required> name of the dashboard folder. Required
folder: ''
# <string> folder UID. will be automatically generated if not specified
folderUid: ''
# <string, required> …Run Code Online (Sandbox Code Playgroud) 我正在尝试从使用 .NET 3.5 的本地构建环境中创建一个 docker 映像。我尝试启用该功能但收到错误。
这是我用于重现问题的最小化 docker 文件:
FROM mcr.microsoft.com/dotnet/framework/sdk
RUN powershell "Install-WindowsFeature -Name NET-Framework-Features -Verbose"
Run Code Online (Sandbox Code Playgroud)
这是输出:
Sending build context to Docker daemon 72.74MB
Step 1/2 : FROM mcr.microsoft.com/dotnet/framework/sdk
---> 88afad8be364
Step 2/2 : RUN powershell "Install-WindowsFeature -Name NET-Framework-Features -Verbose"
---> Running in 0a377584126e
VERBOSE: Installation started...
VERBOSE: Continue with installation?
VERBOSE: Prerequisite processing started...
VERBOSE: Prerequisite processing succeeded.
Install-WindowsFeature : The request to add or remove features on the
specified server failed.
Installation of one or more roles, …Run Code Online (Sandbox Code Playgroud) 我所在的网络的互联网访问权限有限,我需要提供一个域列表以允许提取 docker 映像。
首先,我认为https://registry-1.docker.io/就足够了,但尝试提取图像,似乎也是https://production.cloudflare.docker.com/必需的,所以问题是:是否有允许从公共 docker 注册表提取图像的所有域的列表?
docker ×10
linux ×5
windows-subsystem-for-linux ×2
.net-3.5 ×1
amazon-ec2 ×1
container ×1
dns ×1
grafana ×1
hyper-v ×1
mysql ×1
privileges ×1
proxy ×1
ubuntu ×1
windows ×1
windows-10 ×1