标签: docker

docker nginx 代理与 poste.io 邮件服务器

我想知道这是否可能,如果可以,我如何在一台专用服务器上同时运行 nginx-proxy 和 poste.io 邮件服务器?

我可以单独运行这两个容器,但是当我尝试同时运行这两个容器时,它说我无法运行后一个容器,因为端口 443 已被另一个容器使用。

现在,当我只使用 nginx 反向代理时,我会在服务器上运行多个网站,所有这些网站都会公开端口 80 和 443 以及代理本身,这让我很困惑为什么我不能运行另一个容器做同样的事情(是的,我知道通常两个进程不应该能够使用同一个端口而不需要一些摆弄)。

我使用以下代理: https: //github.com/jwilder/nginx-proxy

我的邮件服务器使用https://poste.io

这是我在服务器上运行的网站 docker-compose 之一的示例。

application:
build: code
volumes:
    - /websites/domain:/var/www/laravel
    - /docker/webs/domain/logs:/var/www/laravel/storage/logs
tty: true
redis:
    image: redis:alpine
db:
    image: mariadb:10.2
    environment:
        MYSQL_ROOT_PASSWORD: toor
        MYSQL_DATABASE: laravel
        TEST_DB_NAME: laravel_test
        MYSQL_USER: laravel
        MYSQL_PASSWORD: laravel
php:
    build: php7-fpm
    volumes_from:
        - application
    links:
        - db
        - redis
nginx:
    build: nginx
    links:
        - php
    volumes_from:
        - application
        - nginx-proxy
    volumes:
        - ./logs/nginx/:/var/log/nginx
    environment:
        - VIRTUAL_HOST=www.domain.com
Run Code Online (Sandbox Code Playgroud)

在我的 nginx …

email-server reverse-proxy docker

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

Docker CE 不适用于 Fedora 32?

如何解决这个问题?

Errors during downloading metadata for repository 'docker-ce-stable':
  - Status code: 404 for https://download.docker.com/linux/fedora/32/x86_64/stable/repodata/repomd.xml (IP: 13.226.68.18)
Error: Failed to download metadata for repo 'docker-ce-stable': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: docker-ce-stable```
Run Code Online (Sandbox Code Playgroud)

docker

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

NFS 共享上的 Docker 卷 - 空目录

我们的业务应用程序在两个节点(节点 1 和节点 2)上运行 Docker Swarm 部署。

应用程序需要一个卷来存储持久数据。由于尚不清楚容器部署在哪里(节点 1 或节点 2),并且应用程序的两个容器可能应该在两个节点上运行,因此我们需要一个解决方案来为所有节点提供共享卷。

为了共享卷,我们使用以下 /etc/exports 文件在第三个节点 3 上设置 NFS 服务器:

/srv          *(rw,sync,anonuid=1000,anongid=1000,all_squash,subtree_check,crossmnt,fsid=root)
Run Code Online (Sandbox Code Playgroud)

(我使用 anonuid/gid 为导出中的每个文件显式设置 node3 系统中已知用户的用户信息。 all_squash 用于确保所有访问用户的所有文件权限都重写给该本地用户)

在我们的 docker-compose.yml 中,我们使用以下设置来包含卷:

volumes:
  nfs-data:
    driver: local
    driver_opts:
      type: nfs
      o: nfsvers=4,addr=node3.example.com,rw,nolock,soft
Run Code Online (Sandbox Code Playgroud)

我们现在遇到了一个问题,容器只是不想启动,错误消息是:

failed to copy file info for /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: failed to chown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: lchown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: operation not permitted
Run Code Online (Sandbox Code Playgroud)

经过一番挖掘后,我发现问题在于 Node3 服务器上导出的 NFS 目录上的初始空文件夹。一旦我放入一个空文件,节点 1 和节点 2 中的容器启动就完全正常。

有人对此有解释吗?

nfs share nfs4 docker

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

Docker - 没有出站流量/网桥仅在混杂模式下工作

在过去的一周里,我一直在为一个非常奇怪的网络问题而苦苦挣扎。总之,除非我运行tcpdump -i br-XXXXX,否则我的容器无法访问互联网(这使网桥进入混杂模式)

我使用 Compose 提出了两个容器:

version: '3'
services:
  seafile:
    build: ./seafile/build
    container_name: seafile
    restart: always
    ports:
      - 8080:80
    networks:
      seafile_net:
        ipv4_address: 192.168.0.2
    volumes:
      - /mnt/gluster/files/redacted/data:/shared
    environment:
      - DB_HOST=10.200.7.100
      - DB_PASSWD=redacted
      - TIME_ZONE=America/Chicago
    depends_on:
      - seafile-memcached
  seafile-memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    restart: always
    networks:
      seafile_net:
        ipv4_address: 192.168.0.3
    entrypoint: memcached -m 256
networks:
  seafile_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 192.168.0.0/24
Run Code Online (Sandbox Code Playgroud)

运行的容器:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
93b1b773ad4e        docker_seafile      "/sbin/my_init -- …
Run Code Online (Sandbox Code Playgroud)

linux linux-networking docker centos7 docker-compose

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

我们如何修复 APT 存储库错误 Debian 操作系统

如何修复 修复 APT 存储库错误 我正在使用 Debian GNU/Linux 9.13 (stretch),如何修复此更新错误?并导入 Docker GPG 密钥?

root@test:~# apt-get update
Ign:1 http://security.debian.org stretch/updates InRelease
Err:2 http://security.debian.org stretch/updates Release
  404  Not Found [IP: 111.73.1113.145 90]
Get:3 https://download.docker.com/linux/debian stretch InRelease [44.8 kB]
Ign:4 http://ftp.de.debian.org/debian stretch InRelease
Err:5 http://ftp.de.debian.org/debian stretch Release
  404  Not Found
Err:3 https://download.docker.com/linux/debian stretch InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7PB0A8C2F192FFDM
Reading package lists... Done
E: The repository 'http://security.debian.org stretch/updates Release' does no longer have a …
Run Code Online (Sandbox Code Playgroud)

linux debian update repository docker

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

剧本中 Ansible 的默认/错误处理问题

我对 Ansible 及其默认值的方式有一些问题。我想要完成的是将 Docker 容器绑定到 eth1(如果存在),否则使用 lo。

我最初的方法是使用默认的未定义变量,如下所示:

shell: docker run -d -p {{ ansible_eth1.ipv4.address | default(127.0.0.1) }}:27017:27017 [...] dockerfile/mongodb
Run Code Online (Sandbox Code Playgroud)

不幸的是,Ansible 抛出了以下错误。

fatal: [server] => One or more undefined variables: 'ansible_eth1' is undefined
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个版本,例如:

shell: docker run -d -p {{ ansible_eth1.ipv4.address | ansible_lo.ipv4.address }}:27017:27017 [...] dockerfile/mongodb
Run Code Online (Sandbox Code Playgroud)

这给了我另一个错误:

failed: [server] => {"changed": true, "cmd": "docker run -d -p {# ansible_eth1.ipv4.address | ansible_lo.ipv4.address #}:27017:27017 [...]", "delta": "0:00:00.021053", "end": "2014-11-01     17:22:04.457375", "rc": 127, "start": "2014-11-01 17:22:04.436322"}
stderr: /bin/sh: 1: ansible_lo.ipv4.address: not …
Run Code Online (Sandbox Code Playgroud)

provisioning ansible docker

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

如何在另一个 Docker 主机上运行 Docker 镜像?

我们目前正在使用 Docker 进行开发,目前正在研究如何使用 Docker 在其他环境中运行我们的软件,例如登台和生产。

我们现在要做的是使用 Jenkins 编译我们的 Java 软件,然后 - 在同一个 Jenkins 构建中 - 还构建一个 Docker 镜像,Java 软件将使用 docker-compose 在其中运行。

现在,在构建 Docker 映像后,我们需要将该映像传送到运行软件的(远程)Docker 主机。这个远程 Docker 主机与运行 Jenkins 的主机不同。我相信我们可以通过遵循这个问题的公认答案来做到这一点

但是,一旦将映像复制到 Docker 主机 - 我们如何使用 启动该映像docker-compose?我们复制的图像只是图像 - 而不是docker-compose.yml文件或Dockerfile就此而言。

docker docker-compose

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

Docker 镜像操作系统的重要性

我们有一个基于 Docker 的开发环境,由于我们的临时和生产服务器不是基于 Docker - 我们正在努力使它们尽可能相似(Linux 发行版、LAMP 版本、配置......)。

我看到大多数 Docker hub 的官方镜像(例如 mysql)基于 Jessie(Debian),我们的服务器运行 Centos 6/7(RedHat),所以我们“从”Centos 创建了我们自己的自定义镜像,它具有所有必需的安装和因此它类似于生产环境。

我的问题是 - 确保我们在 Docker 镜像和生产服务器上使用相同的 Linux 发行版对我们来说真的很重要,还是浪费时间而我们应该只使用官方镜像?

谢谢。

mysql linux development lamp docker

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

PHP-fpm 使用 nginx 很慢,

所以,我一直在我的 docker 容器(nginx 连接到 php-fpm)上运行一些基准测试,它比裸机慢 70 倍以上。与每秒 7,000 个裸机相比,我每秒可以管理 100 个请求。

docker-compose.yml:

version: '3'

services:
    #web
    frontend:
        build:
            context: ./environment/nginx
            dockerfile: ./Dockerfile
        container_name: nginx_software
        restart: always
        ports:
            - 80:80
        volumes:
            - ./environment/nginx/nginx.conf:/etc/nginx/nginx.conf
        links:
            - php
    php:
        build:
            context: ./environment/php
            args:
                version: 7.3-fpm
            dockerfile: ./Dockerfile
        container_name: php_software
        restart: always
        ports:
            - 9000:9000
        volumes:
            - ./api:/var/www/software:cached
        links:
            - mysql
    mysql:
        build:
            context: ./environment/mysql
            args:
                version: 5.7
            dockerfile: ./Dockerfile
        container_name: mysql_software
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        ports:
            - 3306:3306
        volumes:
            - ./environment/mysql/data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: …
Run Code Online (Sandbox Code Playgroud)

ubuntu nginx php-fpm docker

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

SSH 的 DNS 记录 (docker)

我有一个绑定端口 2222:22 的 docker 容器。可以使用连接ssh -T sub.example.com -p 2222

我正在寻找一种无需指定端口号即可访问 ssh 容器的方法。我认为这可以通过 DNS 记录来完成。

SRV _ssh._tcp.sub 5 10022 sub.example.com在提供商的管理界面中为我的域设置了 DNS 记录,这不起作用。

有没有办法做到这一点?

domain-name-system ssh docker

0
推荐指数
2
解决办法
1076
查看次数

限制特定 docker 容器对 AWS EC2 元数据的访问

我在 AWS EC2 实例上运行 docker,并且希望阻止某些容器访问 EC2 实例元数据(IP 地址为 169.254.169.254)。我认为我可以通过在存在以下 ip 表规则的情况下以特定用户(例如 userx)运行这些容器来实现此目的:

$ iptables -A OUTPUT -m owner --uid-owner userx -d 169.254.169.254 -j DROP
Run Code Online (Sandbox Code Playgroud)

当容器通过主机网络运行时,这会按预期阻止连接:

$ docker run -it --rm --network host -u $(id -u userx):$(id -g userx) appropriate/curl  http://169.254.169.254/latest/meta-data/
...blocks..
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,当容器在自己的网络中运行时允许连接

$ docker run -it --rm -u $(id -u userx):$(id -g userx) appropriate/curl  http://169.254.169.254/latest/meta-data/
...show metadata...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?或者,是否有其他一些技术可以为特定容器提供完整的网络访问权限,同时阻止实例元数据?

iptables amazon-ec2 docker

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

Docker 会破坏软件 RAID 设置吗?

读到不应在同时运行 ESXi 虚拟机的机器上实施软件 RAID。这是否意味着我也想在该服务器上避免使用 LVM 和/或 LXC/Docker 容器?

谢谢

raid raid1 raid10 lxc docker

-1
推荐指数
1
解决办法
783
查看次数

是什么导致这个错误?

我正在运行两个 docker 容器,一个用于 hadoop 基本服务,另一个用于水槽。服务运行成功。我链接了两个容器 env 变量是由 docker 成功自动设置的。

1.2.3.4    7ab4ffb30dc0
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet
Run Code Online (Sandbox Code Playgroud)

这是我用于 hadoop 的 /etc/hosts 文件。当我跑

hadoop fs -ls /
hadoop fs -ls hdfs://127.0.0.1:8020/
Run Code Online (Sandbox Code Playgroud)

工作正常。但如果我跑

hostname
Run Code Online (Sandbox Code Playgroud)

它返回 7ab4ffb30dc0

所以我试过了

hadoop fs -ls hdfs://1.2.3.4:8020/
Run Code Online (Sandbox Code Playgroud)

它说 Call From 7ab4ffb30dc0/1.2.3.4 to 7ab4ffb30dc0:8020 failed on connection exception: java.net.ConnectException: Connection denied; 有关更多详细信息,请参阅:http : //wiki.apache.org/hadoop/ConnectionRefused

有什么建议?

你好,我是从那个网站学到的

这些是我学习解决服务器故障问题的方向

  telnet localhost
Run Code Online (Sandbox Code Playgroud)

connection refused。它试图连接到 127.0.0.1 和 0::

  telnet feorar.org
Run Code Online (Sandbox Code Playgroud)

工作,所以telent守护进程正在运行

  telnet …
Run Code Online (Sandbox Code Playgroud)

ip host hadoop docker

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