如何在DOCKERFILE中使用variables
我正在创buildNGINX容器。 我想将所有日志写入已安装的卷而不是默认的卷。 我可以通过将access_log和error_log指向挂载卷中的文件夹来更新nginx.conf文件来实现这一点。 麻烦的是,我希望每个容器写入安装的卷内的容器特定的文件夹。
例如:容器映像名称: mycontainerapp
挂载的卷: /logdirectory
然后我想要: /var/log
指向/logdirectory/mycontainerapp/{containerID}/log
这样,我可以有多个容器login到普通安装的卷。
AFAIK,我可以从/ proc / 1 / cpuset获取容器ID我不知道任何其他方式来获取容器ID
问题是,如何读取该容器ID并使用它来使用DOCKERFILE创build装入的卷(使用文件夹名称)?
另外,如果有更好的方法来实现我的目标,请让我知道,因为我是docker工的新手。
Docker有一个日志logging机制 ,从等式中删除标准的日志文件。 发送到stdout
和stderr
所有数据都将被Dockers日志logging界面捕获。
有许多日志logging驱动程序可以将日志从Docker主机发送到中央日志logging服务(Graylog,Syslog,AWS CloudWatch,ETW,Fluentd,Google Cloud,Splunk)。 json
驱动程序是本地存储在Docker主机上的默认驱动程序。 journald
也将在本地存储和访问。
在nginx config或任何容器中, 发送访问日志stdout
或/dev/fd/1
并将错误日志发送到stderr
或/dev/fd/2
daemon off; error_log /dev/fd/2 info; http { access_log /dev/fd/1; ... }
一旦开始将这个概念应用于所有的容器,任何日志pipe理需求都将从容器/应用程序级别中移除并推送给主机。 容器元数据可以附加到日志 。 移动或更改日志logging机制变得更容易。 移动到像Swarm这样的集群设置变得不那么麻烦。 这一切都与Docker推动的每个容器理念关联起来。
- 在Windows中使主机名下的docker机器可用
- 是否有可能从我的本地机器到AWS托pipe的Docker容器的推送/ git推送?
- 我试图通过Docker与Clojure应用程序连接到MongoDB
- 如何从Docker镜像创buildVirtualBox镜像?
- Elasticsearch Docker容器运行,但通过Dockerfile添加索引后localhost:9200无法访问
- Dockerfile与非主分支嵌套
- Kubernetes通过docker持久化在本地
- 有私人用途的dockerregistry群集解决scheme吗?
- 如何从容器内访问正在运行的docker container external ip?