标签: docker

计算 Docker 容器的带宽

我试图弄清楚如何跟踪来自 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)

bandwidth iptables docker

13
推荐指数
1
解决办法
3425
查看次数

是否可以使用 Docker 为用户分离网站?

我管理服务器,用户在其中拥有自己的网站,可以通过 FTP(如托管公司)访问,而不是致力于隔离 LAMP 堆栈进程,我想知道是否可以实现 Docker 并使用每个网站的图像。

据我了解,您可以通过其端口公开 Docker 实例,因此如果您在同一台服务器上运行两个 Docker 实例,则必须公开两个不同的端口。

但是是否可以不导出端口,而是导出服务器名称,例如:

  • www.somewebsite.com : Docker 实例 1
  • www.otherwebsite.com : Docker 实例 2
  • www.etc.com : Docker 实例...

而且,在同一台服务器中。

我想在服务器上只安装 Apache,这会根据服务器名称将请求重定向到专用的 Docker 实例,但随后我必须在任何 Docker 实例上安装 Apache(再次!)和 MySQL。

这是可能的,而且,这在性能方面是否有趣(或根本没有)?

感谢您的帮助。

hosting docker

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

如何减小 Docker 镜像大小

我有运行 GlassFish 的容器。当我尝试提交图像时,它变成了 14GB。后来,我/tmp/在10GB的容器中删除并尝试提交图像,但图像仍然是14GB。从容器中删除文件似乎没有反映在图像大小上。我该如何解决这个问题?

docker

13
推荐指数
2
解决办法
4713
查看次数

docker-machine 在现有的“通用”主机上?

我的局域网上有一台可以通过 SSH 访问的机器。如何设置它以便我可以使用它进行通信docker-machine

有一个项目 ( boot2docker ) 用于创建用于新主机的 ISO,例如在使用 VirtualBox、Digital Ocean 等启动新实例时。我希望这种设置无需核对已设置的机器——只是为了运行 docker-machine“节点”服务。

docker

13
推荐指数
1
解决办法
3902
查看次数

如何从脚本在 docker 容器中设置 root 密码?

我有一个在主机上运行并创建/启动/停止 docker 容器的脚本。我希望脚本更改容器内 root 用户的密码。

由于容器是 ssh 服务器,我尝试了: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

但它不起作用。在继续并花更多时间调试它之前,我想知道是否有更聪明的方法来做到这一点。

我知道正确的“docker 方式”是制作一个由 Dockerfile 运行的脚本,该脚本从共享卷中提取密码并将其设置为 root 密码。这听起来很复杂,但我知道怎么做,并且适用于我使用的另一个 docker 映像。但我不想为这个而做。

我只需要一个使用 Docker 或 ssh 以非交互方式更改用户密码的命令。

ssh bash passwd docker

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

允许 Docker 容器连接到主机隧道接口上的 OpenVPN 客户端

我有以下设置:

  • 运行 docker 服务的 CentOS 主机
  • 一个用户定义的 docker 桥接网络
  • 2 个 Docker 容器连接到该用户定义的桥接网络
  • OpenVPN 安装(当前在主机上运行。也可以在 docker 容器中运行)
  • 一些客户端连接到 OpenVPN

如何允许 docker bridge 网络上的 docker 容器与 tun0 网络上的 openvpn 客户端通信?

我希望能够以透明的方式在 docker1(10.10.0.3)和连接到 vpn(172.19.0.x 范围)的客户端之间进行基于 tcp 的通信。

我需要在 docker (networking / iptables / ...) 端和主机 (iptables ) 上设置什么?

openvpn docker

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

如何获取在 docker 中运行的服务的真实客户端 IP

我的场景:我想让我的基于 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)

networking docker

13
推荐指数
1
解决办法
6182
查看次数

如何以及在何处使用 Docker 为 php-fpm 配置 pm.max_children?

在使用 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)

nginx php-fpm docker docker-compose

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

docker swarm 数据库连接由对等方重置

我正在使用 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 毫秒后超时

谢谢。

postgresql database docker docker-swarm

13
推荐指数
2
解决办法
5024
查看次数

chmod:更改“myscript.sh”的权限:不允许操作

运行以下 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 的情况下运行它吗?

containers file-permissions docker

13
推荐指数
2
解决办法
4万
查看次数