我试图弄清楚如何跟踪来自 Docker 容器的带宽。
通常我使用--uid-owner作为标记来跟踪给定用户的带宽使用情况。但是,即使我以 docker 容器内的用户身份运行所有进程--uid-owner也无法正常工作。--uid-owner我没有使用,而是尝试只跟踪来自 docker 创建的虚拟以太网设备的所有数据包。
然而,这最终也无济于事:无论我尝试什么,都没有捕获到数据包。
出于绝望,我尝试将规则放在所有链条中,但都没有结果。
Chain PREROUTING (policy ACCEPT 3041 packets, 7849454 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 MARK tcp -- veth5a36 any anywhere anywhere MARK set 0x1
Chain INPUT (policy ACCEPT 273 packets, 23305 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 MARK tcp -- veth5a36 any anywhere anywhere MARK set 0x1
Chain FORWARD …Run Code Online (Sandbox Code Playgroud) 我管理服务器,用户在其中拥有自己的网站,可以通过 FTP(如托管公司)访问,而不是致力于隔离 LAMP 堆栈进程,我想知道是否可以实现 Docker 并使用每个网站的图像。
据我了解,您可以通过其端口公开 Docker 实例,因此如果您在同一台服务器上运行两个 Docker 实例,则必须公开两个不同的端口。
但是是否可以不导出端口,而是导出服务器名称,例如:
而且,在同一台服务器中。
我想在服务器上只安装 Apache,这会根据服务器名称将请求重定向到专用的 Docker 实例,但随后我必须在任何 Docker 实例上安装 Apache(再次!)和 MySQL。
这是可能的,而且,这在性能方面是否有趣(或根本没有)?
感谢您的帮助。
我有运行 GlassFish 的容器。当我尝试提交图像时,它变成了 14GB。后来,我/tmp/在10GB的容器中删除并尝试提交图像,但图像仍然是14GB。从容器中删除文件似乎没有反映在图像大小上。我该如何解决这个问题?
我的局域网上有一台可以通过 SSH 访问的机器。如何设置它以便我可以使用它进行通信docker-machine?
有一个项目 ( boot2docker ) 用于创建用于新主机的 ISO,例如在使用 VirtualBox、Digital Ocean 等启动新实例时。我希望这种设置无需核对已设置的机器——只是为了运行 docker-machine“节点”服务。
我有一个在主机上运行并创建/启动/停止 docker 容器的脚本。我希望脚本更改容器内 root 用户的密码。
由于容器是 ssh 服务器,我尝试了:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
但它不起作用。在继续并花更多时间调试它之前,我想知道是否有更聪明的方法来做到这一点。
我知道正确的“docker 方式”是制作一个由 Dockerfile 运行的脚本,该脚本从共享卷中提取密码并将其设置为 root 密码。这听起来很复杂,但我知道怎么做,并且适用于我使用的另一个 docker 映像。但我不想为这个而做。
我只需要一个使用 Docker 或 ssh 以非交互方式更改用户密码的命令。
我有以下设置:
如何允许 docker bridge 网络上的 docker 容器与 tun0 网络上的 openvpn 客户端通信?
我希望能够以透明的方式在 docker1(10.10.0.3)和连接到 vpn(172.19.0.x 范围)的客户端之间进行基于 tcp 的通信。
我需要在 docker (networking / iptables / ...) 端和主机 (iptables ) 上设置什么?
我的场景:我想让我的基于 docker 的服务知道从网络调用它们的 IP(我的应用程序的要求。)
我在云 VPS、debian jessie 和 docker 1.12.2 上运行。
我nc在详细模式下使用打开端口8080。
docker run --rm -p "8080:8080" centos bash -c "yum install -y nc && nc -vv -kl -p 8080"
Run Code Online (Sandbox Code Playgroud)
说,VPS 有域example.com,从我的另一台机器,假设有dead:::::beef我调用的 IP
nc example.com 8080
Run Code Online (Sandbox Code Playgroud)
该服务器说:
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::8080
Ncat: Listening on 0.0.0.0:8080
Ncat: Connection from 172.17.0.1.
Ncat: Connection from 172.17.0.1:49799.
Run Code Online (Sandbox Code Playgroud)
172.17.0.1位于服务器的本地网络上,当然与我的客户端无关。实际上:
docker0 Link encap:Ethernet HWaddr ....
inet addr:172.17.0.1 …Run Code Online (Sandbox Code Playgroud) 在使用 Nginx 和 PHP-FPM 的 Web 应用程序中,我注意到缓慢和分析日志的时刻,我发现了这条消息,它不时出现:
[19-Nov-2017 19:24:09] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
Run Code Online (Sandbox Code Playgroud)
经过一番研究,我增加了 php.ini 配置文件中的值,停止并删除了 php 容器并重建它,因为设置为卷上文件的设置有效。
分析容器内的配置文件,它是我设置的新值,但是,关于 pm.max_children (5) 的错误消息继续出现。
Here is my docker-compose.yml
version: '2'
services:
pi_web:
build: ./nginx
ports:
- "80:80"
- "443:443"
volumes:
- ../src:/src
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt:/etc/letsencrypt
pi_php:
build: ./php
volumes:
- ../src:/src
- ./php/config/php.ini:/usr/local/etc/php/php.ini
Run Code Online (Sandbox Code Playgroud)
这是 ./php/config/php.ini 的一个片段:
pm = dynamic
pm.max_children = 40
pm.start_servers = 15
pm.min_spare_servers = 15
pm.max_spare_servers …Run Code Online (Sandbox Code Playgroud) 我正在使用 docker swarm 运行 Spring Boot 应用程序,并且我使用 postgres 作为数据库。当我将它们都作为 docker 服务运行时,数据库连接会持续且随机地失败(如您在时间戳上所见),如日志所示:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | 日志:无法从客户端接收数据:对等方重置连接
我无法理解或发现这样做的原因。我很感激任何想法。
编辑:
我们意识到,在测试应用程序时,它也会抛出这样的错误:
SQLTransientConnectionException: HikariPool-1 - 连接不可用,请求在 937517 毫秒后超时
谢谢。
运行以下 docker 文件时"chmod: changing permissions of '/scripts/entrypoint.sh': Operation not permitted"出现错误。
FROM sonarqube:7.7-community
ADD plugins/* /plugins/
ADD scripts/* /scripts/
ADD conf/* /conf/
ADD bin/* /bin/
RUN chmod -R a+X /scripts/myScript.sh
ENTRYPOINT ["/scripts/myScript.sh"]
Run Code Online (Sandbox Code Playgroud)
但是当我添加USER root它时它正在工作。但我不想用 root 运行它。我可以在没有 root 的情况下运行它吗?
docker ×10
bandwidth ×1
bash ×1
containers ×1
database ×1
docker-swarm ×1
hosting ×1
iptables ×1
networking ×1
nginx ×1
openvpn ×1
passwd ×1
php-fpm ×1
postgresql ×1
ssh ×1