标签: docker

PHP Slowlog 为空,尽管 PHP-FPM 说它正在记录

我让 PHP-FPM 监听 Unix 域套接字,并www使用以下值配置了池(唯一存在的):

slowlog = /$pool.log.slow
request_slowlog_timeout = 10s
Run Code Online (Sandbox Code Playgroud)

为了测试,我将 max_execution_time 设置php.ini为 20 秒。然后我创建了一个测试脚本:

<?php

while(1){
  $i++;
}

?>
Run Code Online (Sandbox Code Playgroud)

然后通过网络浏览器访问它。脚本最终超时,原因是max_execution_time但日志仍为空:

root@b7e4a919c988:/var/www/html# ll /www.log.slow 
-rw-rw-rw-. 1 www-data root 0 Jan  4 21:31 /www.log.slow
Run Code Online (Sandbox Code Playgroud)

不过,PHP-FPM 日志似乎表明它期望记录缓慢的运行:

[04-Jan-2018 21:37:28] WARNING: [pool www] child 9382, script '/var/www/html/test.php' (request: "GET /test.php") executing too slow (13.061999 sec), logging
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方法,例如使用循环sleep(10000)或将while循环放入函数中(以防万一它无法构建堆栈跟踪),但似乎没有什么可以让它将回溯打印到日志中。日志文件本身的存在似乎也表明 FPM 预计会写入缓慢的请求。

此时我只是不知道还要检查什么。

php php-fpm docker php7

3
推荐指数
1
解决办法
4263
查看次数

删除 docker 服务并等待容器停止

假设我有 Docker Swarm 服务myservice1和myservice2. 如何删除这些服务并等待关联的容器停止?

docker docker-swarm

3
推荐指数
1
解决办法
2134
查看次数

在 Docker 容器中使用自动安装的 USB 驱动器

在 Ubuntu 中,USB 驱动器在/media/<user>/<drive>插入时会自动安装。我想用它来使新连接的 USB 驱动器在正在运行的 Docker 容器中可用。所以我习惯-v /media/<user>:/media/<user>将USB挂载点的整个父目录挂载到容器中。

如果在容器启动之前连接了 USB 驱动器,则此方法效果很好。在这种情况下,USB 挂载点具有权限0777并且属于<user>. 如果在容器已经运行时连接了 USB 驱动器,则挂载点会出现在容器中,但具有权限0700并由 拥有root!

谁能解释一下这里可能发生的事情吗?我可以想象,默认情况下,USB 驱动器会自动安装为0700属于root,然后一些其他机制会启动,将其更改为0777和<user>。只是 Docker 没有接收到更改。这是真的?

我已经挖掘了大量的论坛主题和邮件列表,但无法弄清楚其中的机制。我还尝试了一些 udev 规则(例如这个),但没有效果。

ubuntu mount usb docker

3
推荐指数
1
解决办法
4284
查看次数

在 Alpine docker 上安装 Shapely

我正在尝试将我的项目移至 docker,并且我一直在使用 alpine 变体。这是一个带有 postgres 数据库的 django 项目

这是我安装依赖项的方法:

...
ADD ./requirements.txt /srv/sites/mysite/requirements.txt

RUN echo "http://mirror.leaseweb.com/alpine/edge/testing" >> 
/etc/apk/repositories

RUN apk add --no-cache --virtual .build-deps \
build-base postgresql-dev libffi-dev gcc libc-dev linux-headers bash \
geos geos-dev jpeg-dev zlib-dev \
&& pip install -r requirements.txt \
&& find /usr/local \
    \( -type d -a -name test -o -name tests \) \
    -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
    -exec rm -rf '{}' + \
&& runDeps="$( \ …
Run Code Online (Sandbox Code Playgroud)

python django docker alpine

3
推荐指数
1
解决办法
5086
查看次数

X-Forwarded-Host 在 nginx 中不起作用

更新 2.我想将所有流量添加并转发到localhost/admin/而不是localhost/.

  • 应用程序监听这些路径:
    • localhost/(然后通过应用获取302 localhost/login),
    • localhost/overview,
    • localhost/books/details, ETC。
  • 我希望管理员用户使用这些网址:
    • localhost/admin/localhost/admin/login(通过申请获得302 )
    • localhost/admin/overview
    • localhost/admin/books/details
  • 使用我的反向代理(见下文):
    • localhost/admin/(我localhost/login通过申请得到了302)

,

我也可以使用ingrees-nginx-controller而不是安装文件。

在 docker nginx.conf 中(或类似于 k8s)

server {
    listen 80 default_server;
    listen [::]:80 default_server;
        ...
        location /admin {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host/admin;
        proxy_pass http://<conteiner2>.docker-network;
    }
    ... 
}
Run Code Online (Sandbox Code Playgroud)

Update1 对于 kubernetes,我正在尝试设置为此,ingress-nginx 我安装了并使用此 YAMLingress-nginx-controller设置:ingress-nginx

apiVersion: …
Run Code Online (Sandbox Code Playgroud)

nginx docker kubernetes

3
推荐指数
1
解决办法
2万
查看次数

如何管理以非 root 用户运行的容器的绑定挂载所有权和权限?

我们在 RHEL 主机上使用 Red Hat 容器映像,全部基于其 ubi7 或 ubi8 映像,默认情况下以默认用户 (uid 1001) 运行。

当容器需要对主机目录进行写访问(即写入日志或临时文件)时,这会带来挑战,因为容器中保存了主机的UID和GID,并且容器写入的文件将归UID所有容器用户的。

据我所知,这给我留下了两个选择:

  1. 在我的主机上创建一个 UID 1001 的用户,并将该用户设置为已安装卷的所有者。这可能会带来问题,因为 UID 1001 是在主机上添加新用户时将使用的第一个 UID,其中 UID 不强制为特定内容。因此,如果容器需要部署在多个服务器上,而这些服务器可能具有或不具有相同的一致 UID 映射,则管理可能会很困难。然而,据我所知,这是唯一的方法,容器写入的文件的所有者(UID 1001)与主机上所需的用户匹配,并且主机上写入的文件的所有者与现有的 UID 匹配。容器。
  2. 将挂载的主机目录设置为全局可写,这会带来许多安全隐患,其中之一是主机上的任何用户都有权删除容器写入的文件。如果 UID 1001 已分配给主机上的另一个用户,这些文件也可能显示为由另一个用户拥有。

通常,我只会在容器映像内创建一个匹配的用户:组组合,在需要时重置所有权和权限并重建它,但对于红帽创建的映像,这意味着大量的跑腿工作,因为一切都是如此使用 UID 1001 运行,并且有许多脚本(container-entrypoint fix-permissions、generate-container-user)强制以这种方式运行。

我是否正确理解了一切,或者是否有另一种(更好的)方法来做到这一点?

linux mount docker

3
推荐指数
1
解决办法
8630
查看次数

如何在 Fedora CoreOS 上安装 docker-compose

我一直在 digitalocean 上使用 Fedora CoreOS 版本 31.20200505.3.0 (图片取自此处https://getfedora.org/coreos/download?tab=cloud_operators&stream=stable)

默认用户核心,但需要提升才能使用docker

使用命令通过二进制文件安装 docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o ~/bin/docker-compose
chmod +x ~/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

由于错误而不起作用:“[6261]加载Python lib'/tmp/_MEI7CUfMy/libpython3.7m.so.1.0'时出错:dlopen:libcrypt.so.1:无法打开共享对象文件:没有这样的文件或目录”

所以我尝试通过替代安装

curl -L --fail https://github.com/docker/compose/releases/download/1.25.5/run.sh -o ~/bin/docker-compose
chmod +x ~/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

(作为 root)但是随后出现了无法访问的绑定安装的问题。使用此处的解决方案解决/sf/ask/1700203151/(添加:Z)到选项并修改 ~/bin/docker-compose shell 脚本因此。

但随后我收到错误“无法连接到位于 http+docker://localhost 的 Docker 守护进程 - 它正在运行吗?”

如果running docker-compose sh我docker run hello-world收到“docker:尝试连接到 unix:///var/run/docker.sock 处的 Docker 守护程序套接字时权限被拒绝:发布http://%2Fvar%2Frun%2Fdocker.sock/v1.40 /containers/create:拨打 unix /var/run/docker.sock:连接:权限被拒绝。请参阅“docker run --help”。”

此时我正在考虑其他容器发行版或 debian。

谁能指出如何在 Fedora CoreOS 上安装 docker-compose?

UPD:感谢 @Bert 提示,这解决了 docker-compose …

docker docker-compose

3
推荐指数
1
解决办法
4797
查看次数

kubectl错误 使用kubectl时必须登录服务器(未授权)

我继续参考以下站点进行工作\n(我不使用 EKS。我使用 kops 在 ec2 上创建 k8s)

\n

AWS 上的 kOps 入门

\n

当我尝试打电话时,kubectl get service我收到消息:error: You must be logged in to the server (Unauthorized)

\n

这是我所做的:

\n
    \n
  1. 设置IAM用户(创建用户并添加角色)

    \n
  2. \n
  3. 集群状态存储(S3)

    \n
  4. \n
  5. 准备本地环境

    \n
  6. \n
\n
export NAME=myfirstcluster.example.com \nexport KOPS_STATE_STORE=s3://prefix-example-com-state-store\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 创建集群配置kops create cluster--zones=us-west-2a${NAME}

    \n
  2. \n
  3. 构建集群kops update cluster ${NAME} --yes

    \n
  4. \n
\n

\xe2\x98\x85成功\xe2\x98\x85

\n
    \n
  1. 当我尝试访问集群时,例如kubectl get nodes,我不断收到错误:You must be logged in to the server (Unauthorized) …

amazon-ec2 docker kubernetes amazon-eks

3
推荐指数
1
解决办法
1万
查看次数

双端口转发 kubernetes + docker

概括:

我有一个运行 kubectl port-forward 的 docker 容器,将作为 k8s 服务运行的 postgres 服务的端口 (5432) 转发到本地端口 (2223)。在 Dockerfile 中,我暴露了相关端口 2223。然后我通过发布该端口来运行容器 ( -p 2223:2223)

现在,当我尝试通过访问 postgres 时psql -h localhost -p 2223,出现以下错误:

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

但是,当我docker exec -ti对上述容器执行操作并运行上述 psql 命令时,我能够连接到 postgres。

Dockerfile 命令:

EXPOSE 2223
CMD ["bash", "-c", "kubectl -n namespace_test port-forward service/postgres-11-2 2223:5432"]
Run Code Online (Sandbox Code Playgroud)

Docker 运行命令:

docker run -it --name=k8s-conn-12 -p 2223:2223 my_image_name:latest
Run Code Online (Sandbox Code Playgroud)

docker …

port-forwarding psql docker kubernetes kubectl

3
推荐指数
1
解决办法
3847
查看次数

为什么 docker 镜像 - 架构特定?

我想更好地理解 - 为什么 Docker 镜像是特定于架构的?为什么 ARM 处理器架构需要与 ARM64 AArch32 等不同的映像?

Docker 镜像显然包含处理器特定的指令,这使得它们依赖于架构。docker镜像
的哪一部分包含处理器特定指令以及为什么?

为什么Docker-Runtime 不提供独立于架构的抽象层?

是吗,因为否则该层将与虚拟机中的 HyperVisor 层相当,并且不再是“轻量级”的?

docker

3
推荐指数
1
解决办法
1154
查看次数