小编kon*_*dor的帖子

将docker容器日志发送到logstash的最佳方法

假设我在容器(docker)中运行Nginx.
访问日志和错误日志通过Dockerfile中的STDOUT发送:

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log
Run Code Online (Sandbox Code Playgroud)

Logspout似乎是一个优雅的解决方案,用于在logstash中发送容器的STDOUT(使用syslog输入配置)

input {
    syslog {
        type => syslog
        port => 5514
    }
}
Run Code Online (Sandbox Code Playgroud)

但logspout不知道通过STDOUT发送的日志格式(或者我错过了什么?)

所以我必须做以下事情:

input {
    syslog {
        type => nginx-access
        port => 5514
    }
}
Run Code Online (Sandbox Code Playgroud)

但那么nginx错误日志呢?如果我通过STDOUT发送php-fpm日志怎么办?logspout如何管理这个?

另一个解决方案是运行rsyslog来设置容器并将收集的日志发送到logstatsh的输入...

你可以看到它对我来说并不是很清楚...我希望能够将nginx和php-fpm日志发送到logstash,这样它们就可以被解释为它们是什么......但我找不到"良好做法"......

你能帮我吗

logging logstash docker

10
推荐指数
2
解决办法
6180
查看次数

使用boot2docker或本机docker安装?

我想在Linux环境中使用docker,所以我有两个选择:

我认为VM方式更容易安装,但您可能在笔记本电脑和docker容器之间共享数据时遇到一些困难(例如,您必须在virualbox中安装guest虚拟机添加...)

另一方面,本机安装似乎不那么容易,但我认为您可以获得一些性能并更轻松地共享数据...

所以我想知道,对于你来说,这2种方法有哪些优点/不便之处?

你的选择是什么?为什么?

谢谢 :)

docker boot2docker

6
推荐指数
1
解决办法
6357
查看次数

仅将.proto协议缓冲文件放在存储库中?

我想知道关于源存储库(例如git)的协议缓冲区的最佳实践是什么:

我是否只需要将.proto文件放入存储库中,并让使用源代码的其他任何人通过protoc编译器重新生成类代码?还是同时放入.proto文件和protoc编译器生成的源代码是最好的做法?

protocol-buffers grpc

6
推荐指数
1
解决办法
1242
查看次数

Symfony主义事件订阅者未在debug:event-dispatcher中列出

Symfony v3.3.4,Doctrine ORM v2.5.6

我已经为一个理论实体创建了一个事件订阅者:

AppBundle\EventListener\LivreSubscriber:
    tags:
        - { name: doctrine.event_subscriber }
Run Code Online (Sandbox Code Playgroud)

它工作正常!但是很长时间以来,我都坚信它没有用,因为在debug:event-dispatcher命令中未列出侦听器:

$ docker-compose exec phpapp bin/console debug:event-dispatcher doctrine.event_subscriber

[WARNING] The event "doctrine.event_subscriber" does not have any registered listeners.
Run Code Online (Sandbox Code Playgroud)

事件监听器是相同的。而且:symfony探查器(“事件”部分)中都未列出侦听器和订户...这样可以正常工作,但是奇怪的是侦听器中没有列出侦听器,不是吗?

你能告诉我你的项目是否有同样的行为吗?

php event-dispatching symfony doctrine-orm symfony-3.3

6
推荐指数
1
解决办法
1094
查看次数

Docker最佳安全实践

您将在Internet上找到的大多数Dockerfile以root身份构建和运行软件!这必须吓唬每个人,对吧?......但似乎并非如此......

所以pb是以root身份运行服务器,即使在容器中也是如此,因为容器内的root与容器外的root完全相同.

其中一个解决方案是使用"USER"指令正确构建Dockerfile,就像本例中的tor中继一样.

另一个解决方案是使用"linux用户命名空间"将容器内的UID/GID"映射"到容器外的UID/GID.例如,容器中的例外根(uid = 0)可以映射到主机内的个人用户帐户,因此在共享卷中创建的文件具有良好的权限.

所以我的问题是:Docker的安全性最佳做法是什么?以非root身份运行代码(即Dockerfile中的USER指令)?或者通过使用"用户名称空间"?或者最终(或者另外)使用selinux和/或AppArmor?

谢谢 :)

linux linux-kernel docker linux-namespaces

5
推荐指数
1
解决办法
1148
查看次数

当docker构建Dockerfile时,允许更多内存

我尝试构建一个Dockerfile,我得到了这个:

Linking CXX executable ../../../../bin/clang
collect2: error: ld terminated with signal 9 [Killed]
make[2]: *** [bin/clang-3.2] Error 1
make[1]: *** [tools/clang/tools/driver/CMakeFiles/clang.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

通常,这意味着我没有足够的内存.那么如何使用更大的内存(或交换?)运行docker build

谢谢 :)

docker

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

功能编程:副作用实际发生在哪里?

在开始学习Haskell之后,即使在阅读了大量文档之后,仍然有一些我在Haskell中无法理解的东西.

我知道要执行IO操作,你必须使用一个"IO monad",它将一个值包装在一种"黑盒子"中,这样​​任何使用IO monad的函数仍然是纯粹的功能.好的,很好,但那么IO操作实际发生在哪里?

这是否意味着Monad本身并不是纯粹的功能?或者是在C中实现IO操作,在Haskell编译器中"嵌入"?

我可以在纯Haskell中使用或不使用Monad编写可执行IO操作的内容吗?如果没有,如果在语言本身内部不可能,这种能力来自何处?如果它在Haskell编译器中嵌入/链接到C代码块,IO Monad最终会调用它来执行"脏工作"吗?

io monads haskell functional-programming side-effects

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

0
推荐指数
1
解决办法
969
查看次数