堆叠后Docker套接字崩溃 [英] Docker socket crash after stack up

查看:87
本文介绍了堆叠后Docker套接字崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图部署包含我的开发环境的Docker堆栈.但是在随机情况下,我会遇到下一个错误:

I trying to deploy docker stack, that includes my development environment. But in random cases I have next error:

> failed to create service < service_name >: Cannot connect to the
> Docker daemon at unix:///var/run/docker.sock. Is the docker daemon
> running?

接下来,我重新启动docker daemon.有时,它需要杀死docker进程和垫片.我删除旧堆栈,然后重新构建.有时docker成功完成构建,但是套接字在开始阶段崩溃.

Next I restart docker daemon. Sometimes it requires to kill docker processes and shims. I deleting old stack and build again. Some times docker successfully finishes build, but socket crashes on the starting stage.

在常规模式下启动所有容器时,所有容器都可以正常工作,而不会出现群集或堆栈.不能完全在群内工作.

Also all containers work properly when I starting it in regular mode, without swarm or stack. It is not work exactly inside swarm.

我已使用下一条命令进行构建:

I have used next command to build:

> $ docker stack deploy dev-env-stc -c docker-compose.yml

环境在Antergos Linux(Arch)中运行.

Environment run in Antergos Linux(Arch).

布局如图所示

使用以下命令创建的Nginx容器和Docker网络:

Nginx container and docker networks created using commands:

>$ docker run --detach --name nginx-main --net dev-env-ext --ip 10.20.20.10 --publish 80:80 --publish 443:443 --volume /env-vol/nginx/conf:/etc/nginx:ro --volume /env-vol/nginx/www:/usr/var/www --volume /env-vol/nginx/logs:/usr/var/logs --volume /env-vol/nginx/run:/usr/var/run --volume /env-vol/ssl:/usr/var/ssl:ro nginx-webserver 
>
> $ docker network create --driver=bridge --attachable --ipv6 --subnet fd19:eb5a:3d2f:f15d::/48 --subnet 10.20.20.0/24 --gateway 10.20.20.1 dev-env-ext
> 
> $ docker network create --driver=bridge --attachable --ipv6 --subnet fd19:eb5a:3e30:f15d::/48 --subnet 10.20.30.0/24 --gateway 10.20.30.1 dev-env-int
> 
> $ docker network create --driver=overlay --attachable --ipv6 --subnet fd19:eb5a:3c1e:f15d::/48 --subnet 10.20.40.0/24 --gateway 10.20.40.1 dev-env-swarm
> 
> $ docker network connect dev-env-swarm --ip=10.20.40.10 nginx-main
>
> $ docker network connect dev-env-int --ip=10.20.30.10 nginx-main

我的docker-compose.yml文件:

My docker-compose.yml file:

version: '3.6'
volumes:
  postgres-data:
    driver: local
  redis-data:
    driver: local
networks:
  dev-env-swarm:
    external: true
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    hostname: gitlab.testenv.top
    external_links: 
      - nginx-main
    ports:
      - 22:22
    healthcheck:
      test: ["CMD", "curl", "-f", "https://localhost:443"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: vip
      resources:
        limits:
          cpus: "0.50"
          memory: 4096M
        reservations:
          cpus: "0.10"
          memory: 512M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 300s
    networks:
      dev-env-swarm:
        aliases:
          - gitlab.testenv.top
    dns: 
      - 10.10.10.10
      - 8.8.8.8
    volumes:
      - /env-vol/gitlab/config:/etc/gitlab
      - /env-vol/gitlab/logs:/var/log/gitlab
      - /env-vol/gitlab/data:/var/opt/gitlab
    external_links:
      - nginx-main
  redis:
    env_file: .env
    image: redis:3.2.6-alpine
    hostname: redis.testenv.top
    external_links: 
      - nginx-main
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:6379"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 1024M
        reservations:
          cpus: "0.05"
          memory: 128M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    volumes:
      - redis-data:/var/lib/redis
    command: redis-server --appendonly yes
    networks:
      dev-env-swarm:
        aliases:
          - redis.testenv.top
    dns:
      - 10.10.10.10
      - 8.8.8.8
  redisco:
    image: rediscommander/redis-commander:latest
    hostname: redisco.testenv.top
    external_links: 
      - nginx-main
    depends_on:
      - redis
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8081"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 512M
        reservations:
          cpus: "0.05"
          memory: 256M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    networks:
      dev-env-swarm:
        aliases:
          - redisco.testenv.top
    dns: 
      - 10.10.10.10
      - 8.8.8.8
    environment: 
      REDIS_PORT: 6379
      REDIS_HOST: redis.testenv.top
  plantuml:
    image: plantuml/plantuml-server:tomcat
    hostname: plantuml.testenv.top
    external_links: 
      - nginx-main
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 1024M
        reservations:
          cpus: "0.05"
          memory: 256M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    networks:
      dev-env-swarm:
        aliases:
          - plantuml.testenv.top
    dns: 
      - 10.10.10.10
      - 8.8.8.8
  portainer-agent:
    image: portainer/agent
    external_links: 
      - nginx-main
    expose:
      - 9001
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 1024M
        reservations:
          cpus: "0.05"
          memory: 256M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    environment:
      AGENT_CLUSTER_ADDR: tasks.portainer-agent
      AGENT_PORT: 9001
      LOG_LEVEL: debug
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      dev-env-swarm:
        aliases:
          - portainer-agent.testenv.top
    deploy:
      mode: global
  portainer:
    image: portainer/portainer
    command: -H tcp://tasks.portainer-agent:9001 --tlsskipverify
    depends_on:
      - portainer-agent
    external_links: 
      - nginx-main
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 2024M
        reservations:
          cpus: "0.05"
          memory: 512M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    volumes:
      - /env-vol/portainer/data:/data
    hostname: portainer.testenv.top
    networks:
      dev-env-swarm:
        aliases:
          - portainer.testenv.top
    dns: 
      - 10.10.10.10
      - 8.8.8.8 
  pgadmin4:
    image: dpage/pgadmin4:latest
    hostname: pgadmin.testenv.top
    external_links: 
      - nginx-main
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 60s
    deploy:
      mode: global
      endpoint_mode: dnsrr
      resources:
        limits:
          cpus: "0.20"
          memory: 1024M
        reservations:
          cpus: "0.05"
          memory: 256M
      restart_policy:
        condition: on-failure
        delay: 20s
        max_attempts: 3
        window: 60s
    environment:
      PGADMIN_DEFAULT_EMAIL: email@example.com
      PGADMIN_DEFAULT_PASSWORD: PASWORD
    networks:
      dev-env-swarm:
        aliases:
          - pgadmin.testenv.top
    dns: 
      - 10.10.10.10
      - 8.8.8.8
    volumes:
      - /env-vol/pgadmin:/var/lib/pgadmin

推荐答案

套接字的问题来自源代码错误的Python安装和libs的手动安装.看起来我已经安装了不兼容的版本.当我从存储库中重新安装Python时,此问题不再出现.

Problem with socket was from wrong Python installation from sources and manual installation of libs. Looks like I have installed incompatible versions. When I have reinstalled Python from repository this problem wasn't appear again.

但是我已经得出结论,在开发环境中使用Docker Stack并不是一个明智的选择,出于这个原因,最好使用Docker Compose.因此,应将Docker Stack用于部署配置(例如Docker Swarm或Kubernetes或其他云环境的部署).

But I has concluded that using Docker Stack in development environment is not good decision, better to use Docker Compose for this reasons. So Docker Stack should be used for deployment configurations(like deploy of Docker Swarm or to the Kubernetes or to another cloud environments).

这篇关于堆叠后Docker套接字崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆