AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[docker-compose](server)

Martin Hope
servusMori
Asked: 2023-11-06 22:46:45 +0800 CST

MySQL_Workbench Docker Ubuntu Linux

  • 5

我正在使用https://hub.docker.com/r/linuxserver/mysql-workbench中的 docker-compose 文件。

version: "2.1"
services:
  mysql-workbench:
    image: lscr.io/linuxserver/mysql-workbench:latest
    container_name: mysql-workbench
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /path/to/config:/config
    ports:
      - 3000:3000
      - 3001:3001
    cap_add:
      - IPC_LOCK
    restart: unless-stopped

当我发出docker-compose up -d错误时

mysql-workbench    | [custom-init] No custom files found, skipping...
mysql-workbench    | _XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
mysql-workbench    | 
mysql-workbench    | Xvnc KasmVNC 1.2.0 - built Oct 26 2023 21:53:23
mysql-workbench    | Copyright (C) 1999-2018 KasmVNC Team and many others (see README.me)
mysql-workbench    | See http://kasmweb.com for information on KasmVNC.
mysql-workbench    | Underlying X server release 12014000, The X.Org Foundation
mysql-workbench    | 
mysql-workbench    | [ls.io-init] done.
mysql-workbench    | Obt-Message: Xinerama extension is not present on the server

我究竟做错了什么?

docker-compose
  • 1 个回答
  • 45 Views
Martin Hope
Joe Gatt
Asked: 2023-04-19 17:15:55 +0800 CST

Traefik 上的多个 cors 站点

  • 6

我在我的 Ubuntu 服务器上使用 Traefik。Cors 在一个网站上运行良好,但当我尝试将它用于两个网站时,它们似乎发生了冲突。正确的语法是什么?

这是我的 docker-compose 文件中的内容:

服务 1:

  - "traefik.http.routers.service-one.middlewares=cors"
  - "traefik.http.middlewares.cors.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
  - "traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist=https://site1.com,https://site2.com,https://site2.com"
  - "traefik.http.middlewares.cors.headers.accesscontrolmaxage=100"
  - "traefik.http.middlewares.cors.headers.addvaryheader=true"

服务 2:

  - "traefik.http.routers.service-two.middlewares=cors"
  - "traefik.http.middlewares.cors.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
  - "traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist=https://site1.com,https://site2.com,https://site2.com"
  - "traefik.http.middlewares.cors.headers.accesscontrolmaxage=100"
  - "traefik.http.middlewares.cors.headers.addvaryheader=true"
docker-compose
  • 1 个回答
  • 17 Views
Martin Hope
Andy
Asked: 2022-04-07 13:04:36 +0800 CST

Docker 容器未在 docker-internal DNS 中注册主机名

  • 0

我使用 Docker 来实现 Nextcloud 服务。为此,我使用了官方的 nextcloud-apache 映像、一个 Nginx 反向代理、certbot 和 MariaDB。没什么特别的,真的。

我的 docker 实例以 swarm 模式运行。所有容器与管理器一起在同一主机上运行,​​每个服务只有一个副本,标准覆盖网络。swarm 是通过使用标准的 compose 文件启动的。

我的设置已经稳定运行了好几个月,直到昨晚它神秘地崩溃了。据我所知,没有任何更新或重新启动,对于操作系统(Ubuntu Server LTS)、Docker-CE 或任何图像(我定期手动进行所有更新,我当然没有在昨晚凌晨 4 点)。我追查到 Nextcloud 容器的原因(但我认为这是一个 Docker 问题,因此我的问题在这里......):

Nginx 反向代理的日志显示以下行:

2022/04/06 20:16:45 [error] 10#10: *3 nextcloud-app could not be resolved (3: Host not found), client: 10.135.40.1, server: <redacted>, request: "GET / HTTP/1.1", host: "<redacted>"

Nginx 无法解析后端服务器并向客户端抛出 502/Bad Gateway。

我检查了一下,Nextcloud 容器(“nextcloud-app”)的主机名确实没有在 docker-internal DNS 中注册(在每个容器的 127.0.0.11 下可用)。我可以登录到任何容器并触发 DNS 请求(在after apt-get update && apt-get install iputils-ping dnsutils容器内运行之后),名称“nextcloud-app”在任何地方都没有解析。例子:

root@nextcloud-app:/var/www/html# nslookup nextcloud-app
Server:     127.0.0.11
Address:    127.0.0.11#53

** server can't find nextcloud-app: NXDOMAIN

所有其他容器名称都按应有的方式解析。解析外部地址也可以。“nextcloud-app”是唯一无法解析的容器名称。

但是,我可以直接使用 docker-internal IP 地址与 nextcloud-app 容器进行 ping 操作。连接在那里,只有 DNS 解析失败。

我不知道如何进一步调试。我一周没有碰我的 compose.yml 文件。据我所知,一切都没有改变。然而,该设置在一夜之间停止工作。

如何强制 Nextcloud 容器在 docker-internal DNS 上注册自己的主机名?任何建议表示赞赏。

domain-name-system docker docker-compose nextcloud docker-swarm
  • 1 个回答
  • 694 Views
Martin Hope
Mudassar Hashmi
Asked: 2022-03-30 12:40:34 +0800 CST

Docker Compose 中的 Redis 拒绝 RDB 文件 Crontab 的权限

  • 0

嗨,我有以下 docker-compose.yaml 文件。

version: "3.9"

volumes:
  local_postgres_data2: {}
  local_postgres_data_backups2: {}

services:
  postgres:
    image: postgres
    container_name: angel-postgres
    restart: always
    volumes:
      - local_postgres_data2:/var/lib/postgresql/data:Z
      - local_postgres_data_backups2:/backups:z
    environment:
      POSTGRES_DB: angel-agility
      POSTGRES_HOST: localhost
      POSTGRES_USER: angel-user
      POSTGRES_PASSWORD: angel123
    ports:
      - "5432:5432"

  redis:
    container_name: angel-redis
    image: redis:latest
    ports:
      - '6379:6379'
    restart: unless-stopped

当我运行 docker-compose up 时,Redis 的日志中出现错误:

2276:C 29 Mar 2022 20:32:52.005 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Permission denied
1:M 29 Mar 2022 20:32:52.105 # Background saving error

我在不同平台上尝试了所有解决方案,但无法使 Redis 工作。一个线索或方向使它工作将受到高度赞赏。

还简要介绍了这个问题,为什么它的发生也会对读者和我有很大的帮助。期待。

docker-compose redis aws-ec2
  • 1 个回答
  • 501 Views
Martin Hope
Roddy
Asked: 2022-03-18 02:55:16 +0800 CST

LAN 上的网关地址是否有事实上的“标准”

  • 0

C 类子网上的网关地址是否有事实上的“标准”?

问是因为我一直在用 macvlans 解决 docker-compose 问题,它假设网关始终在 192.xx1,而实际网关是 192.xx251

gateway docker-compose
  • 1 个回答
  • 27 Views
Martin Hope
Twometer
Asked: 2022-01-29 09:27:20 +0800 CST

使用网桥时 Docker 网络超时

  • 1

我正在使用 Ubuntu 版本20.04.3 LTS(内核5.4.0-96-generic)和 Docker 的专用服务器上运行20.10.7, build 20.10.7-0ubuntu5~20.04.2。该系统是全新安装。

我有一个用于我的服务之一,它使用和Dockerfile拉入一些库。中间容器之一总是无法连接到 Internet,出现 DNS 或 TCP 超时错误。哪个容器失败是完全随机的。aptgo get

另请注意,问题不在于某个特定服务,我尝试构建一个在 NodeJS 上运行的完全不同的服务,但npm install失败并出现相同的错误

今天我也遇到了我的 Nginx 容器无法访问的问题。与它的所有连接都导致超时错误。

使用 docker 网络的容器之间的连接也无法正常工作。

运行sudo systemctl restart docker暂时解决了这个问题,但它会重新出现一两个构建线。当我使用网络而不是默认桥接网络构建时host,问题就消失了,这就是我怀疑桥接配置错误的原因。

我试过重新安装 Docker,重置 iptables 和桥接配置,设置不同的 DNS 服务器,但无济于事。泊坞窗日志文件显示没有错误。

这个问题的原因可能是什么?

更新:

我禁用了 UFW,但没有成功。这是构建超时期间我的 dmesg 日志中的转储,也许这有助于确定原因:

[758001.967161] docker0: port 1(vethd0c7887) entered blocking state
[758001.967165] docker0: port 1(vethd0c7887) entered disabled state
[758001.967281] device vethd0c7887 entered promiscuous mode
[758002.000567] IPv6: ADDRCONF(NETDEV_CHANGE): veth7e3840a: link becomes ready
[758002.000621] IPv6: ADDRCONF(NETDEV_CHANGE): vethd0c7887: link becomes ready
[758002.000644] docker0: port 1(vethd0c7887) entered blocking state
[758002.000646] docker0: port 1(vethd0c7887) entered forwarding state
[758002.268554] docker0: port 1(vethd0c7887) entered disabled state
[758002.269581] eth0: renamed from veth7e3840a
[758002.293056] docker0: port 1(vethd0c7887) entered blocking state
[758002.293063] docker0: port 1(vethd0c7887) entered forwarding state
[758041.497891] docker0: port 1(vethd0c7887) entered disabled state
[758041.497997] veth7e3840a: renamed from eth0
[758041.547558] docker0: port 1(vethd0c7887) entered disabled state
[758041.551998] device vethd0c7887 left promiscuous mode
[758041.552008] docker0: port 1(vethd0c7887) entered disabled state
linux ubuntu docker docker-compose
  • 2 个回答
  • 2259 Views
Martin Hope
evoelise
Asked: 2022-01-26 03:41:01 +0800 CST

Docker Compose 端口未暴露?

  • 2

我有一个简单的基于 Python 的 Web 服务器,它运行在一个使用 docker compose 设置的容器中,该容器公开了 8080 端口。

当我 docker-compose up 服务时,它报告端口已公开,但端口未对外公开。

接下来我应该看什么诊断?

这是一个典型的运行

➜  demo04 sudo docker-compose up -d
Recreating leagueweb_database ... done
Recreating leagueweb_server   ... done

Python Web 服务器(使用 CherryPy)报告它已启动正常并打开端口 8080。

leagueweb_server | [25/Jan/2022:11:27:21] ENGINE Serving on http://127.0.0.1:8080

Docker 报告它正在转发端口 8080

➜  demo04 sudo docker-compose ps
       Name                     Command                  State                              Ports
------------------------------------------------------------------------------------------------------------------------
leagueweb_database   /entrypoint.sh mysqld            Up (healthy)   0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
leagueweb_server     ./wait-for-it.sh database: ...   Up             0.0.0.0:8080->8080/tcp,:::8080->8080/tcp

从远程 PC 测试这个我可以看到,虽然端口 3306 是外部开放的 - 端口 8080 不是。

PS C:> Test-NetConnection 192.168.1.132 -Port 3306
RemoteAddress    : 192.168.1.132
RemotePort       : 3306
TcpTestSucceeded : True

PS C:> Test-NetConnection 192.168.1.132 -Port 8080
WARNING: TCP connect to (192.168.1.132 : 8080) failed

防火墙已关闭

➜  demo04 sudo ufw status
Status: inactive

这是码头工人撰写文件

version: '3'
services:

    leagueweb:
        # Install Python and required libraries with a Dockerfile
        build:
            context: .
            dockerfile: leagueweb.dockerfile
            
        restart: unless-stopped
        
        container_name: leagueweb_server
        
        # Don't start up until the database is started
        depends_on:
            - database
        
        # Expose HTTP port 
        ports:
            - "8080:8080"

        # Mount the leagueweb code and resources
        volumes:
            - "/home/testuser/demo04/code:/leagueweb"
 
        # Start the server only once the database is running
        command: ["./wait-for-it.sh", "database:3306", "--", "python", "-u", "/leagueweb/leagueweb.py"]
        

    database:
        # Use MySQL 5.7 as the database
        image: mysql/mysql-server:5.7
        
        restart: unless-stopped
        
        container_name: leagueweb_database

        # Set environment variables to set initial database set-up
        environment:
            - "MYSQL_ROOT_PASSWORD=root"
            - "MYSQL_USER=leagueweb"
            - "MYSQL_PASSWORD=********"
            - "MYSQL_DATABASE=leagueweb01"
            
        # Uncomment to expose the MySQL database externally on port 3306 for 
        # testing 
        ports:
            - "3306:3306"

        # Mount init.sql file to automatically run and create tables for us.
        # everything in docker-entrypoint-initdb.d folder is executed as 
        # soon as container is up and running.
        volumes:
            - "/home/testuser/demo04/db:/docker-entrypoint-initdb.d"
python docker docker-compose cherrypy
  • 1 个回答
  • 2052 Views
Martin Hope
Artur Cichosz
Asked: 2022-01-07 09:19:13 +0800 CST

尽管规则明确允许,但无法从公共网络访问 UFW 端口

  • 0

我有两个专用服务器:“web”(YYY.YYY.YYY.YYY)和“monitor”(XXX.XXX.XXX.XXX)。两者都在一个大众主机(hetzner)的同一个网络中。

现在在“网络”上,我运行了 3 个普罗米修斯指标端点:裸机主机上的 docker-engine (9323) 和 neo4j (2004)、telegraf (9273) 作为 docker 容器。两个 docker 容器都将其输出端口正确映射到主机,因此在“web”上执行的以下调用有效:

lynx http://YYY.YYY.YYY.YYY:9323/metrics => OK
lynx http://YYY.YYY.YYY.YYY:9273/metrics => OK
lynx http://YYY.YYY.YYY.YYY:2004/metrics => OK

但是从“监视器”服务器调用这些端点仅适用于熊金属服务 docker-engine (9323)

lynx http://YYY.YYY.YYY.YYY:9323/metrics => OK
lynx http://YYY.YYY.YYY.YYY:9273/metrics => timeout
lynx http://YYY.YYY.YYY.YYY:2004/metrics => timeout

UFW 状态详细信息提供以下内容

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
[...]
9323/tcp                   ALLOW IN    XXX.XXX.XXX.XXX
9273/tcp                   ALLOW IN    XXX.XXX.XXX.XXX
2004/tcp                   ALLOW IN    XXX.XXX.XXX.XXX
[...]

这些 IP 没有其他规则,也没有适用于子网、接口等的一般规则。所有其他规则都适用于离散端口,例如 22、80、443 等。

奇怪的是,它在几个小时前就起作用了。与此同时,我在这里对此进行了一些试验https://medium.com/@pitapun_44686/what-is-the-best-practice-of-docker-ufw-under-ubuntu-69e11c826b31并将以下块附加到/etc/ufw/after.rules 的最后

*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
-A DOCKER-USER -j ufw-user-forward
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
-A DOCKER-USER -j RETURN
COMMIT

现在我将其注释掉并重新启动了ufw。那些端口 9273 和 2004 仍然无法访问,所以这不是原因。

我将 ufw 日志级别配置为高,但我看不到任何连接 attepmtps 或从主机 XXX.XXX.XXX.XXX 丢弃的数据包。

尝试 telnet 进入一个工作端口(telnet YYY.YYY.YYY.YYY 9323)我可以在 ufw 日志中看到通信,但对于其他两个端口则看不到。

[UFW AUDIT] SRC=XXX.XXX.XXX.XXX DST=YYY.YYY.YYY.YYY DPT=9323 =>
[UFW AUDIT] SRC=YYY.YYY.YYY.YYY DST=XXX.XXX.XXX.XXX SPT=9323

我使用 ansible "ufw" 模块配置了 ufw。

还有什么其他原因?到底是怎么回事?:-)

由于“可疑”活动(频繁通信),主机网络是否会在这些服务器之间施加某种过滤器?它也发生了,我今天在 YYY.YYY.YYY.YYY 上从 XXX.XXX.XXX.XXX 到端口 80/443 运行了一些过多的 artillery.io 测试,但是这个假设并不能解释为什么只有这两个端口不起作用了。

最终测试,在 YYY.YYY.YYY.YYY 上关闭 ufw 也没有帮助。端口 9273 和 2004 不可访问,9323 可访问。

这是iptables -L -v -n https://pastebin.com/HWeJGXb9的输出

debian docker docker-compose ufw
  • 1 个回答
  • 152 Views
Martin Hope
Jay
Asked: 2021-12-04 04:21:03 +0800 CST

docker - nodejs - selenium-webdriver - 错误:服务器提前终止,状态为 127

  • 0

我是码头集装箱的新手。我正在尝试创建一个包含 npm、node js、chromedriver 和 selenium-chromedriver 的 docker 文件并运行我的 javascript 文件。在我的本地,我在无头 chrome 浏览器中运行脚本。

这是我的码头文件。

FROM ubuntu:20.04

USER root

WORKDIR /home/app

RUN apt-get update
  
RUN apt-get install git --yes

# Install Google Chrome
RUN apt-get install wget
RUN apt-get install ./google-chrome*.deb --yes
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P /usr/bin/ && \ dpkg --unpack google-chrome-stable_current_amd64.deb && \ apt-get install -f -y,

#FROM node:14.18.0
FROM node:17.2.0
USER root
ENV NODE_ENV=production
WORKDIR /LoadTesting
COPY ["/LoadTesting/package.json", "."]
RUN npm install
RUN npm ci
RUN npm install nodejs
RUN npm install mocha -g
RUN npm install chromedriver -g --unsafe-perm
RUN npm install selenium-webdriver


COPY /LoadTesting .
COPY /LoadTesting/test .
CMD ["node", "./test/script.js"]

以下是我的码头工人撰写文件

version: '3.7'

services:
  k6:
    image: "loadimpact/k6:0.32.0"
    volumes:
      - "./loadtesting:/scripts"
  nodejs:
    build:
      context: ./
      dockerfile: k6-nodejs-dockerfile
    volumes:
      - '.loadtesting:/loadtesting'

volumes:
  grafana-storage:
  prometheus-data:
    external: true

然后我使用以下命令

docker compose build //no error
docker compose up k6 nodejs

然后我得到以下错误。

| /LoadTesting/node_modules/selenium-webdriver/remote/index.js:248
-nodejs-1  |                 reject(Error(e.message))
-nodejs-1  |                        ^
-nodejs-1  |
-nodejs-1  | Error: Server terminated early with status 127
-nodejs-1  |     at /LoadTesting/node_modules/selenium-webdriver/remote/index.js:248:24
-nodejs-1  |     at processTicksAndRejections (node:internal/process/task_queues:96:5)

在我的本地 Windows 环境中,它工作正常。据我所知,我正在安装 chrome、chrome 驱动程序和 selenium-webdriver。

什么不见​​了?

docker docker-compose node.js selenium
  • 1 个回答
  • 766 Views
Martin Hope
Tom
Asked: 2021-12-01 03:47:22 +0800 CST

使用新配置重新创建单个 docker-compose 容器

  • 0

如果我对我的docker-compose.yml(例如,更改容器端口暴露在哪个主机端口上)进行更改,我可以重新创建该单个容器还是需要重新启动整个堆栈?

docker-compose stop ; docker-compose up将完成这项工作,但我想避免重新启动其余服务。我还想避免删除与我正在重新启动的服务关联的卷,所以docker-compose kill <service> ; docker-compose rm不是一个选项。

docker docker-compose
  • 1 个回答
  • 1321 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve