标签: docker

如何查看 Docker 容器重启的 HISTORY

我正在尝试查找容器重新启动的历史记录。

当然STATUS, a 上的字段docker ps将显示当前的正常运行时间。

但是,如果我有一个带有重启策略的容器,例如restart: unless-stopped并且它经历了多次重启 -如何检查重启/正常运行时间历史记录?

如果 docker 引擎本身没有跟踪这个 - 有没有已知的好方法来处理这个问题?

docker

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

Docker + Nginx + PHP-FPM 错误:[emerg] 1#1: 在上游找不到主机

我有一个从这个 repo克隆的 LEMP 堆栈的 docker 设置。

在运行窗口 10 的开发机器上一切正常,但是当我将图像推送到 docker hub 并将其拉到我的 VPS 上时,无论我做什么,我总是收到此错误:

[emerg] 1#1: host not found in upstream "php-fpm:9000" in /etc/nginx/conf.d/upstream.conf:1
Run Code Online (Sandbox Code Playgroud)

此错误来自两个文件。

第一: 来自这个 Nginx Docker 文件

这是代码:

RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
&& rm /etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)

第二个 来自这个 Nginx default.conf 文件

这是代码:

    location ~ \.php$ {
      ...
      fastcgi_pass php-upstream;
      ...
    }
Run Code Online (Sandbox Code Playgroud)

我说这两个文件是 b/c 其他地方没有引用 php-upstream 的原因。

我已经尝试了添加/删除主机、添加depends_on、更改 nginx、php 版本、禁用 selinux 的所有可能组合,但它不起作用。我总是在生产中遇到相同的错误,但在本地服务器上一切正常。

nginx php-fpm docker docker-compose docker-machine

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

Docker 镜像与 Helm Charts

首先我很抱歉,因为我是开发人员,试图了解一些服务器的东西。如果这个问题在这里没有任何意义,我请求版主不要太苛刻。

根据我的理解,我们在 docker hub 中有 docker 镜像,用于运行容器。所以对我来说 docker hub 镜像是镜像包。为了管理容器,我们使用 kubernates。现在 helm 是 kubernates 的包管理器。Helm charts 是 docker-images 或 kubernate clusers 的包还是什么?

docker kubernetes helm

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

worker_connections 还不够——Nginx、docker

在我的生产服务器中,我们有几个上游,它们是在带有 nginx 的反向代理后面运行的 docker 容器。其中一个容器是 mqtt 代理(mosquitto),我们用来通过 websockets 进行连接。这是我们的 nginx.conf 文件:

worker_processes 1;

events {
  worker_connections  1024;
}

http {
    upstream br-frontend {
        server br-frontend:3000;
    }

    upstream br-backend {
        server br-backend:5000;
    }

    upstream mosquitto {
        server mosquitto:9001;
    }

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    ssl_certificate /etc/nginx/certs/server.crt;
    ssl_certificate_key /etc/nginx/certs/server.key;

    server {
        listen 443 ssl default_server;
        server_name _;

        location / {
            proxy_pass http://br-frontend/;
        }

        location /api {
            proxy_pass http://br-backend;
        }

        location /swagger.json {
            proxy_pass http://br-backend/swagger.json;
        }

        location /swaggerui { …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy wss docker mqtt

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

Docker 主机的正确 iptables 规则是什么?

我有带 Docker 的 Ubuntu 服务器来为 MySQL 和 SSH/SFTP 提供服务,我需要对除3306和22之外的所有端口进行防火墙设置,这是非常标准和微不足道的要求,对吧?

现在,我设法找到了一种解决方案,但在应用它之后,它对我来说并不完全有效,要么:

  1. 我无法访问任何提到的服务(默认情况下)
  2. 我无法从容器内访问互联网(如果我放入iptables: falseDocker 的daemon.json配置文件)

我尝试了许多其他搜索结果,但它们大多非常复杂,以至于我不明白他们在做什么,或者他们编写了大量脚本,这让我成为一个 iptables 外行,从它那里获取一些东西是一项不可能完成的任务。

提议的解决方案看起来相当简单且易于理解,但整个 Docker 网络的复杂性使得调试变得更加困难。

有人可以分享他们针对 Docker 主机的工作 iptables 规则或至少指导我正确的方向吗?

我使用 docker-compose 来启动服务,这是我的 yaml:

version: '3.7'

services:
  mysql:
    container_name: 'mysql'
    image: mysql:8.0.13
    command: --default-authentication-plugin=mysql_native_password
    user: 1000:1000
    ports:
      - "3306:3306"
    volumes:
      - ./data:/var/lib/mysql
      - ./config/custom.cnf:/etc/mysql/conf.d/custom.cnf
    networks:
      - database
    restart: always

networks:
  database:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

编辑: 我发现允许 Docker 管理 iptables 规则是推荐的并且要求不高,至少从长远来看是可以的,即使我没有以我喜欢的方式打开所需的端口,它仍然可以有效的。此时我想要的是找出是否可以使用 iptables 来阻止 Docker 打开的端口以及如何(通过 mangle 预路由?)。有什么建议?万分感谢!

linux iptables linux-networking docker docker-compose

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

Docker 18.09 不使用 IPv6(在 Ubuntu 18.04 上)

全新且完全打补丁的 Ubuntu 18.04 实例(在 Linode VPS 上),带有从官方 Docker 存储库安装的 Docker 18.09.0(构建 4d60db4)。

IPv4 网络运行良好,无论是在容器之间还是内部到外部(一旦我设置了net.ipv4.ip_forward=1)。

然而,IPv6 甚至不会在容器之间进行通信,更不用说在外部进行通信了。

我尝试了很多东西,但发现本指南是最好的(除了它不起作用:-))

因此我有...

更新/etc/docker/daemon.json了以下内容并重新启动:

{
“ipv6”: true,
“fixed-cidr-v6”: “2001:db8:1::/64”
}
Run Code Online (Sandbox Code Playgroud)

检查了 MTU。

运行两个 docker 容器来测试这个:

sudo docker run -itd ajeetraina/ubuntu-iproute bash
sudo docker run -itd ajeetraina/centos-iproute bash
Run Code Online (Sandbox Code Playgroud)

两者都在内部显示出完美的连接性:

$ sudo docker exec -it b1cbb63b4e88 ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:acff:fe11:3  prefixlen 64  scopeid 0x20<link>
        inet6 2001:db8:1::242:ac11:3  prefixlen 64  scopeid 0x0<global>
        ether …
Run Code Online (Sandbox Code Playgroud)

ubuntu ipv6 docker ubuntu-18.04

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

AWS ECS 服务未启动任何任务

我已经在 ECS 上设置了集群、容器、任务和服务。

在我创建该服务后,它似乎正在运行“3 个所需的任务”,但是没有任何任务被创建为挂起或正在运行。实际上,它似乎什么也没做。

我的任务定义(不包括空值和空数组)是

{
  "containerDefinitions": [
    {
      "portMappings": [
        {
          "hostPort": 5000,
          "protocol": "tcp",
          "containerPort": 25565
        },
        {
          "hostPort": 5000,
          "protocol": "udp",
          "containerPort": 25565
        }
      ],
      "cpu": 0,
      "memoryReservation": 1024,
      "image": "itzg/bungeecord",
      "essential": true,
      "name": "BungeeCord"
    }
  ],
  "compatibilities": [
    "EC2"
  ],
  "taskDefinitionArn": "arn:aws:ecs:us-west-1:949960343466:task-definition/BungeeCordTask:3",
  "family": "BungeeCordTask",
  "requiresAttributes": [
    {
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
    }
  ],
  "requiresCompatibilities": [
    "EC2"
  ],
  "revision": 3,
  "status": "ACTIVE",
}
Run Code Online (Sandbox Code Playgroud)

我的集群有 3 个 ECS 实例,它们都在运行并且上面没有任何东西: 我的集群

我的服务在这里: 我的服务

我没有任何自动缩放、负载平衡或任何设置。但我确实有一些真正的默认服务发现。

任何人都知道为什么没有任务开始?

编辑:

  • 我看过“停止的任务”,它实际上是空的。
  • 我还通过 SSH 连接到我的每个 …

amazon-ec2 containers amazon-web-services docker amazon-ecs

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

ECS 中的 Docker 卷权限

我正在将现有应用程序从在裸 EC2 实例上运行迁移到使用 ECS 的容器化设置。我有两种情况需要在容器之间共享数据。一个是存储一些静态和媒体文件的 EFS 共享,另一个是日志目录,以便我可以使用 sidecar 容器中的 Cloudwatch Logs 代理将日志推送到 Cloudwatch。

网络服务器需要能够将数据写入这两个位置,但到目前为止我还无法实现。日志目录是本地卷,归root:root. 我按照这些说明设置的 EFS 共享归1000:xfs(无用户名)所有。在这两种情况下,我的网络用户 ( www-data) 都不能写入这些位置。

如何告诉 ECS 在具有给定所有者和/或组的容器内安装卷?

amazon-web-services docker amazon-ecs

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

为什么当文件存在时 docker-compose 会发出“没有这样的文件或目录”?

我正在测试我的服务器的裸机恢复,它基本上用我的服务启动了一组 docker 容器。我从备份中恢复/etc/docker,在那里我保留了所有配置和持久卷。

然后我尝试启动其中一个容器:

root@srv-backup:/etc/docker# docker-compose --verbose -f /etc/docker/docker-compose.d/20-registry.yaml up
compose.config.config.find: Using configuration files: /etc/docker/docker-compose.d/20-registry.yaml
ERROR: compose.cli.main.main: .IOError: [Errno 2] No such file or directory: '/etc/docker/docker-compose.d/20-registry.yaml'
Run Code Online (Sandbox Code Playgroud)

然而,该文件在那里:

root@srv-backup:/# ll /etc/docker/docker-compose.d/20-registry.yaml
-rwxrwxr-x+ 1 root root 842 Jan 24 15:19 /etc/docker/docker-compose.d/20-registry.yaml*

root@srv-backup:/# cat /etc/docker/docker-compose.d/20-registry.yaml
services:
  registry:
    container_name: registry
    image: registry
    labels:
      - traefik.http.routers.registry.rule=Host(`registry.example.com`)
      - traefik.http.routers.registry.entryPoints=https
      - traefik.http.routers.registry.tls=true
      - traefik.http.routers.registry.tls.certresolver=le
      - traefik.http.middlewares.lan.ipwhitelist.sourcerange=192.168.10.0/24, 192.168.20.0/24
      - traefik.http.routers.registry.middlewares=lan
      - traefik.enable=true
    restart: unless-stopped
    volumes:
      - /etc/docker/container-data/registry:/var/lib/registry
version: '3'

root@srv-backup:/# file /etc/docker/container-data/registry
/etc/docker/container-data/registry: directory
Run Code Online (Sandbox Code Playgroud)

我用相对路径和完整路径尝试了各种咒语 - …

docker docker-compose

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

包 docker-ce 需要 containerd.io &gt;= 1.4.1,但是没有一个提供程序可以安装

今天早上我在红帽(Linux 4.18.0-240.1.1.el8_3.x86_64)上的更新/升级都遇到了这个问题,不知道该怎么做。听起来像 yum 完全卡住了因为这个。

$ sudo yum update
Updating Subscription Management repositories.
Last metadata expiration check: 2:40:27 ago on Wed 16 Dec 2020 07:53:10 AM CST.
Error: 
 Problem: package docker-ce-3:20.10.1-3.el7.x86_64 requires containerd.io >= 1.4.1, but none of the providers can be installed
  - cannot install the best update candidate for package docker-ce-3:19.03.14-3.el7.x86_64
  - package containerd.io-1.4.3-3.1.el7.x86_64 is filtered out by modular filtering
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
Run Code Online (Sandbox Code Playgroud)

redhat yum docker containerd

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