标签: docker

我应该为 /var/lib/docker 禁用 btrfs CoW 吗?

我发现对于大文件(例如 PostgreSQL 数据库的数据目录)使用 btrfs CoW 功能并不是一个好主意。

由于我使用 docker 作为数据库,我现在问自己,是否应该对整个/var/lib/docker目录禁用 CoW。但我不确定,因为docker的分层文件系统是否利用了这个功能?

或者是否可以仅针对某些特定卷禁用 CoW?

btrfs docker

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

为不同的 Docker 注册表配置“auth”和“credsStore”

我正在尝试为两个不同的注册表配置 Docker。(一个 ECR 和 docker.io)我需要ecr-login使用 simple 配置 ECR 1 和 docker.io auth,但我无法同时配置这些。它给出以下错误:

保存凭据时出错:存储凭据时出错 - 错误:退出状态 1,输出:not implemented

这是我的 ~/.docker/config.json

{
    "auths": {
            "https://index.docker.io/v1/": {
                    "auth": "BASE64-STRING"
            }
    },
    "credsStore": "ecr-login"
}
Run Code Online (Sandbox Code Playgroud)

为什么 Docker 在已经可用的credsStore情况下还要尝试使用它?auth

docker docker-registry amazon-ecr

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

以交互模式进入已退出的 docker 容器

我有一个已退出的 docker 容器Exited (1) 8 seconds ago。我想以交互模式(bash 模式)输入它来检查出了什么问题,我该怎么做?

我知道我可以启动一个图像(docker run -it IMAGE_NAME /bin/bash)直接进入交互模式。

如何重新运行已退出的容器并进入交互模式?docker start -a CONTAINERID将导致它再次退出 1。因为有一个默认启动的自动命令,在Dockerfileas中指定CMD java ...

docker

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

docker-in-docker: `Cannot connect to the Docker daemon at tcp://docker:2375`

I am trying to manually use the docker:19.03.5-dind image as shown by the "How to use this image" section.

  • First I am running the daemon

    $ docker run --privileged -d --rm --name=docker-daemon \
                 --network=test  docker:19.03.5-dind
    e1f8544d30df5bc010d67e38b38be0f47306b29ab0fdeb32861c5716582c9917
    
    Run Code Online (Sandbox Code Playgroud)
  • I see that it is up and listens on port 2376

    $ docker logs docker-daemon
    ...
    time="2019-11-28T11:31:40.266976728Z" level=info msg="Daemon has completed initialization"
    time="2019-11-28T11:31:40.550083421Z" level=info msg="API listen on [::]:2376"
    time="2019-11-28T11:31:40.550169911Z" level=info msg="API listen on /var/run/docker.sock"
    
    Run Code Online (Sandbox Code Playgroud)
  • Next I bring up the docker client:

    $ docker run …
    Run Code Online (Sandbox Code Playgroud)

docker

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

从 ECS 容器记录到两个不同的 CloudWatch 日志流的最佳方式?

我们在AWS的ECS平台上运行我们的服务,并将日志发送到AWS CloudWatch。

我们有两种类型的日志,任何容器都可以生成其中一种类型:

  1. 常见的应用程序日志(访问、错误等);这些必须易于开发人员和管理员查看
  2. 审计日志(人类可读的“谁在何时做了什么”日志);必须限制对这些内容的访问

审核日志是法规强制要求的,除了更严格的访问控制要求外,它们的保留时间比应用程序日志更长,因此将两者放在同一个日志流中并不是真正的选择。因此,我们使用两个日志流,其中一个位于具有严格访问策略的 CloudWatch 日志组中。

目前,我们正在将日志写入单独的磁盘文件,日志代理将日志条目从磁盘文件发送到 CloudWatch。然而,我们希望切换到“Doc​​ker 方式”的日志记录,即将所有日志写入 STDOUT 或 STDERR,并让日志驱动程序处理其余的事情。这听起来特别有吸引力,因为日志磁盘(几乎)是我们正在使用的唯一磁盘安装,摆脱它们确实非常好。(除了日志磁盘之外,我们的容器是严格只读的。)

问题是,我们无法找到一种明智的方法来保持日志流分离。显而易见的事情是以某种方式标记日志消息并稍后将它们分开,但仍然存在一个问题:

  • 明智的方法是让日志驱动程序根据消息标签将消息分离到不同的日志流。Docker 的 awslogs 日志驱动程序不支持此功能。
  • “强力”方法是写入单个 CloudWatch 日志流,并使用写入其他两个日志流的自写过滤器重新处理该流。由于 CloudWatch 计费基于 API 调用,这基本上会使成本翻倍,因此是不可能的。
  • 我们还可以设置一个日志主机,并使用另一个 docker 日志驱动程序(例如 syslog)将所有日志发送到那里。然后我们可以分割日志流,并将它们转发到 CloudWatch。这会给所有日志记录增加一个瓶颈和一个单点故障,所以听起来也不太好。

希望我们遗漏了一些明显的东西,在这种情况下,我们将非常感谢您的帮助。

如果没有,是否有任何解决方法(甚至是适当的解决方案)来让这种事情发挥作用?

amazon-web-services amazon-cloudwatch docker amazon-ecs

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

nginx 找不到 /etc/letsencrypt/options-ssl-ngin.conf 文件

我正在尝试使用 linux 盒子(运行 ubuntu 18.04)和 nginx、gunincorn、letsencrypt 和 docker 来提供 python-django web 应用程序。在学习了许多在线教程之后,我按照本教程http://pawamoy.github.io/2018/02/01/docker-compose-django-postgres-nginx 成功通过端口 80 通过 http 提供了应用程序服务。 html。

然而,我现在真的很难通过端口 443 通过 https 进行部署。我想也许我不理解基本的 docker 概念。我运行时遇到的错误sudo docker-compose up如下。

NGINX 错误:

nginx_1 | nginx: [emerg] open() "/etc/letsencrypt/options-ssl-nginx.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/local_ssl.conf:28

我相信这是因为我没有链接 docker-compose.yml 文件中的 options-ssl-nginx.conf 文件,也许是通过卷?我不知道这是否正确。我的 docker-compose.yml 文件和 nginx.conf 文件的相关部分如下:

docker-compose.yml:

version: '3'

services:

  # database containers
  database1:
    ...

  # web container
  djangoapp:
    ...

  # reverse proxy container (nginx)
  nginx:
    image: …
Run Code Online (Sandbox Code Playgroud)

nginx django docker lets-encrypt docker-compose

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

如何在Dockerfile中将文件夹的权限更改为777?

我有一个这样的项目目录:

|-var/www
|-docker-compose.yml
|-app
|--uploads
|---photos
|-Dockerfile
Run Code Online (Sandbox Code Playgroud)

这是我的docker-compose.yml文件:

myapp:
    build:
      context: myfolder
      dockerfile: Dockerfile
    container_name: flask
    image: api/v1:01
    restart: unless-stopped
    environment:
      APP_ENV: "prod"
      APP_DEBUG: "False"
      APP_PORT: 5000
    volumes:
      - appdata:/var/www
Run Code Online (Sandbox Code Playgroud)

我想要的: 我想更改app/uploads/photos此文件夹的权限。777这是一个上传文件夹,因此用户可以上传到此文件夹。

我Dockerfile现在的样子是这样的:

FROM python:3.6.8-alpine3.9

ENV GROUP_ID=1000 \
    USER_ID=1000

WORKDIR /var/www/
ADD . /var/www/

RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-dev
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

RUN addgroup -g $GROUP_ID www
RUN adduser -D -u $USER_ID …
Run Code Online (Sandbox Code Playgroud)

linux permissions nginx file-permissions docker

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

基于 Docker 的反向代理和 NginX 用于多个域

我正在尝试创建一个基于 docker 的多容器设置,其中包含多个域的反向代理以提供服务,其中网站、数据库和基于 nginx 的反向代理在容器中运行,但我不知道我在做什么丢失(我是 nginx 新手)。

\n\n

细节:

\n\n
    \n
  • 基于 NginX 的 docker 容器用于反向代理
  • \n
  • 我拥有 2 个域\n\n
      \n
    • 例如:my_example_domain_1.com,my_example_domain_2.net
    • \n
  • \n
  • 我想在每个域名后面放置一个容器来服务这两个域\n\n
      \n
    • 我想运行两个独立的网站:例如:两个 WordPress 网站
    • \n
  • \n
  • 我需要两个域和相应容器之间的 NginX 路由
  • \n
\n\n

我的例子: (basedir multi-container:)

\n\n

nginx_revproxy/default.conf:

\n\n
server {\n    listen       80;\n    server_name  localhost;\n\n    location / {\n        root   /usr/share/nginx/html;\n        index  index.html index.htm;\n    }\n\n    error_page   500 502 503 504  /50x.html;\n    location = /50x.html {\n        root   /usr/share/nginx/html;\n    }\n}\n\nserver {\n    listen       80;\n    server_name  my_example_domain_1.com;\n    location …
Run Code Online (Sandbox Code Playgroud)

nginx routing reverse-proxy docker docker-compose

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

Kubernetes主节点的硬件要求是什么

我们正在尝试设置一个包含 25 个工作节点和 1 个主节点的集群。在此之前,我们需要选择硬件,尤其是主节点。

如何估算我们需要的硬件资源?主节点的硬件要求与集群的大小有关吗?我们可以遵循官方硬件推荐或资源规则之类的东西吗?

deployment docker kubernetes

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

docker 容器暴露的端口显示为已过滤 - 无法连接

我正在安装 Ubuntu 20.04 的全新服务器,
我通过运行启动了一个示例 nginx,docker run --rm -p 80:80 nginx
端口 80 似乎在机器上打开,curl但我无法打开 nginx 默认页面:

$ nmap localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2020-11-15 13:06 GMT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000077s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 …
Run Code Online (Sandbox Code Playgroud)

networking iptables containers docker

5
推荐指数
0
解决办法
2087
查看次数