标签: docker-compose

运行 docker-compose up 时“拨打 unix /tmp/docker.sock: connect: 权限被拒绝”

我刚在工作中换了一台新电脑,我不明白为什么会出现这个问题。我已经搜索了很多 SO 线程和其他网站,但还没有解决这个问题。

我的操作系统是 Fedora 29。而且我对 docker 很菜鸟,所以我真的迷失在这一切中。

所以基本上每次我运行时docker-compose up,我都会收到此错误:

nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error retrieving docker server version info: Get http://unix.sock/version: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error retrieving docker server info: Get http://unix.sock/info: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Error listing containers: Get http://unix.sock/containers/json?all=1: dial unix /tmp/docker.sock: connect: permission denied
nginx-proxy        | dockergen.1 | 2019/10/15 08:23:40 Watching docker events
nginx-proxy        | dockergen.1 …
Run Code Online (Sandbox Code Playgroud)

fedora docker docker-compose

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

尝试在 AWS 上启动时 docker-compose 返回错误

我想将我的服务器部署到 AWS EC2 实例。当我在 ssh 控制台中输入“sudo docker-compose up”时,出现以下错误:

错误:对于 nginx 无法启动服务 nginx:OCI 运行时创建失败:container_linux.go:345: 启动容器进程导致“process_linux.go:430: 容器初始化导致 \"rootfs_linux.go:58: 挂载 \\"/home/ubuntu /site/nginx/default.conf\\“到rootfs \\”/var/lib/docker/overlay2/b24f64910c6ab7727a4cb08afac0d034bb759baa4bfd605466ca760359f411c2/merged\\“在\\”/var/lib/docker/overlay2/b24f64910c6ab7727a4 cb08afac0d034bb759baa4bfd605466ca760359f411c2/合并/etc/ nginx/conf.d/default.conf\\" 导致 \\"不是目录\\"\"": 未知:您是否尝试将目录挂载到文件上(或反之亦然)?检查指定的主机路径是否存在并且是预期的类型

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

version: '2'

networks:
    SRVR:

services:
    nginx:
        image: nginx:stable-alpine
        container_name: SRVR_nginx
        ports:
            - "8080:80"
        volumes:
            - ./code:/code
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
            - ./nginx/logs:/var/log/nginx
        depends_on:
            - php
        networks:
            - SRVR

    php:
        build: ./php
        container_name: SRVR_php
        volumes:
            - ./code:/code
        ports:
            - "9000:9000"
        networks:
            - SRVR
Run Code Online (Sandbox Code Playgroud)

相同的 docker-compose.yml 在运行 Ubuntu 操作系统的本地计算机上运行良好。EC2 实例还运行 Ubuntu 操作系统。

nginx amazon-web-services docker docker-compose

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

SQL Server Docker Compose SQLCMD 不执行

我目前正在尝试在 docker compose 中设置 SQL Server,并且想使用指令在构建时创建数据库RUN。这不起作用,但是当我使用 sh 在正在运行的容器上执行相同的命令时,它起作用

我的撰写文件如下所示:

version: "3.7"

services:
  mssql:
    build: ./mssql
    environment: 
      SA_PASSWORD: "Password12345!"
      ACCEPT_EULA: "Y"
    container_name: mssqlDB
    ports:
      - "1433:1433"
    restart: always
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile:

FROM mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
COPY ./prod.sql /
RUN ./opt/mssql-bin/sqlcmd -S localhost -U SA -P "Password12345!" -Q "Create Database HelloWorld"
CMD ["/opt/mssql/bin/sqlservr"]
Run Code Online (Sandbox Code Playgroud)

sql-server docker dockerfile docker-compose

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

Docker 容器是否允许在运行时更改资源 [CPU、内存、存储]?

我有几个数据库进程在 Docker 容器中运行。在某些情况下,我想限制容器使用的内存和存储。我知道 docker-compose 可以让您限制资源使用,但我希望尽可能保持容器运行。

docker docker-compose

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

Docker Compose - getaddrinfo 失败:名称或服务未知

我在尝试访问我的 PHP 容器(正在连接到 MariaDB 容器)时遇到 mysql 连接问题

mysqli_connect(): php_network_getaddresses: getaddrinfo 失败: 第16/var/www/html/config.php中的名称或服务未知

看来 PHP 容器不知道我的 MariaDB 容器。怎么看配置好像都还不错。如果我公开我的数据库容器,我就可以在本地连接到它。

docker-compose.yaml

version: "3"
networks:
  api_server:
services:
  db:
    image: mariadb
    restart: always
    volumes:
      - ./mariadb_data:/var/lib/mysql
      - ./database_dump/dump.sql:/docker-entrypoint-initdb.d/dump.sql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
      MYSQL_DATABASE: somedb
  php-server:
    image: php.core.image
    networks:
      - api_server
    build:
      context: ./php
      dockerfile: Dockerfile
    depends_on:
      - db
    environment:
      ENV_NAME: dev
    ports:
      - 80:80
Run Code Online (Sandbox Code Playgroud)

PHP 的 Dockerfile

FROM php:7.2-apache
RUN docker-php-ext-install -j$(nproc) mysqli

COPY . /var/www/html/
Run Code Online (Sandbox Code Playgroud)

我在 php 中的连接如下所示: …

docker docker-compose

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

多存储库 docker-compose

我有两个服务,位于两个不同的 GitLab 存储库,部署到同一主机。我目前正在使用supervisord来运行所有服务。每个存储库的 CI/CD 将代码推送到主机。

supervisord我正在尝试用 Docker替换。我所做的如下:

  1. Dockerfile为每个服务设置一个。
  2. 创建了第三个仅包含 的存储库docker-compose.yml,该存储docker-compose up库在其 CI 中运行以构建和运行这两个服务。我希望这个存储库只部署一次。

我正在寻找一种docker-compose在部署这两项服务之一时自动更新的方法。

编辑:本质上,我试图找出使用docker-compose多存储库设置和一台主机的最佳方法。

我的docker-compose

version: "3.4"
services:
    redis:
        image: "redis:alpine"
    api:
        build: .
        command: gunicorn -c gunicorn_conf.py --bind 0.0.0.0:5000 --chdir server "app:app" --timeout 120
        volumes:
            - .:/app
        ports:
            - "8000:8000"
        depends_on:
            - redis
    celery-worker:
        build: .
        command: celery worker -A server.celery_config:celery
        volumes:
            - .:/app
        depends_on:
            - redis
    celery-beat:
        build: .
        command: celery beat …
Run Code Online (Sandbox Code Playgroud)

python continuous-integration docker microservices docker-compose

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

消费者:无法连接到 amqp://user:**@rabbit1:5672//:无法解析代理主机名

我仔细研究了非常类似的 stackoverflow 问题,并将我的代码更改为现在的样子。我仍然收到cannot resolve broker hostname错误。如果我只是使用amqp:user:mypass@locahost:5672我会得到connection refused

# docker-compoose.yml
version: "3.8"

services: 
  broker:
    image: rabbitmq:3-management-alpine
    hostname: rabbit1
    environment: &env
      RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
      RABBITMQ_DEFAULT_USER: "user"
      RABBITMQ_DEFAULT_PASS: "password"
      RABBITMQ_DEFAULT_VHOST: "/"
      CELERY_BROKER_URL: "amqp://user:password@rabbit1:5672"
    ports:
      - "5672:5672"
      - "15672:15672"
    expose:
      - "5672"
    networks:
      - webnet
    volumes: 
      - .:/home/user

  worker:
    build: 
      context: .
      dockerfile: ./worker/Dockerfile
    command: ["celery", "worker", "--app=worker.tasks.app", "--loglevel=INFO"]
    environment: 
      <<: *env
    links: 
      - broker 
    depends_on: 
      - broker
    networks:
      - webnet
    volumes: 
      - .:/home/user


networks:
    webnet:
Run Code Online (Sandbox Code Playgroud)
# Dockerfile
FROM python:3.7-slim …
Run Code Online (Sandbox Code Playgroud)

rabbitmq celery python-3.x docker docker-compose

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

在 Docker 中覆盖 ENTRYPOINT 时,停止 Apache2 的速度要慢得多

我正在对 PHP 应用程序进行容器化,并希望根据环境变量修改 Apache 配置。这是在覆盖默认值的脚本中完成的ENTRYPOINT

FROM php:7.2-apache
# ...
COPY prepare-docker-configs.sh .
RUN chmod +x prepare-docker-configs.sh
ENTRYPOINT ./prepare-docker-configs.sh
Run Code Online (Sandbox Code Playgroud)

进行这些修改后,Apache 不会启动。apache2-foreground似乎缺少命令,所以我在末尾运行它prepare-docker-configs.sh

#!/bin/bash
# ... Some config substitution
apache2-foreground
Run Code Online (Sandbox Code Playgroud)

现在 Apache 已经启动,一切都按预期进行。但我注意到停止容器比以前慢得多。我跑time docker-compose down了两个星座:

没有我的自定义覆盖ENTRYPOINT

real    0m2,080s
user    0m0,449s
sys 0m0,064
Run Code Online (Sandbox Code Playgroud)

我的自定义脚本为ENTRYPOINT

real    0m12,247s
user    0m0,491s
sys 0m0,067s
Run Code Online (Sandbox Code Playgroud)

所以需要大约10秒的时间。特别是在需要进行大量测试的开发过程中,这总共会浪费大量时间。

为什么我的自定义ENTRYPOINT停止速度如此之慢?如何解决?

我尝试STOPSIGNAL SIGWINCH从原始 Dockerfile 添加并运行docker-php-entrypoint,两者都没有帮助。

docker-compose.yml文件没什么特别的。由于内部冲突,它只是定义了服务并覆盖默认网络:

version: '2' 
services: 
  app: 
    build:
      context: .
      args: …
Run Code Online (Sandbox Code Playgroud)

performance apache2 docker dockerfile docker-compose

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

我可以在不使用 docker swarm 的情况下设置 docker 覆盖网络吗?

我有两组服务(容器组)在两台不同的机器上运行。两组服务都是使用 docker-compose 文件声明的。目前,在每个 docker-compose 文件中,我都包含一个桥接网络。这两组服务通过明确提及每台机器的 IP 地址来相互通信。

  1. 如果我让这两个 Docker 服务集通过覆盖网络相互通信,而不是像我现在那样通过硬编码 IP 地址来让每个服务集相互通信,这会减少网络延迟吗?换句话说,会提高这两个服务之间的通信性能吗?

  2. 如果上一个问题的答案是肯定的,那么我可以在不使用 docker swarm 的情况下在这两台机器之间定义一个覆盖网络吗?另外,我可以在 docker-compose 文件中声明这个 docker-swarm 网络吗?

如果您有 .yaml 配置文件或命令行代码片段可以完成我想要的操作,我们将不胜感激。

docker docker-compose docker-swarm

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

如何在 Docker 上使用 redis-cli 和 Redis?

在 Docker 中运行 Redis

文件docker-compose.yml

version: "3.8"

services:
  redis:
    image: redis
    volumes:
      - ./data:/data
    ports:
      - 6379:6379
Run Code Online (Sandbox Code Playgroud)
docker pull redis
docker-compose up
docker-compose up -d
docker container ls
telnet localhost 6379
Run Code Online (Sandbox Code Playgroud)

如何连接到Redis服务器redis-cli

redis docker redis-cli docker-compose

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