标签: docker

如何删除不存在的docker网络?

我有一个带有 3 个节点的 docker swarm 配置。有一个网络仅位于其中一个节点上。在该特定节点上,docker network ls显示网络,显示docker network rm [network-id]来自守护进程的错误响应:网络...未找到”,同时docker network inspect [network-id]显示网络,它看起来不错(范围:swarm,驱动程序:覆盖)。完全像我并行创建的测试方式来比较它。有人知道吗?我怎样才能摆脱那个网络僵尸?

networking zombie docker docker-swarm

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

从 ECR 拉取 docker:dind 时,Docker 从 GitLab CI 登录 AWS ECR 失败,并显示“dial tcp: Lookup docker on xxxx:53: no such host”

我正在致力于将用于 GitLab CI/CD 构建和部署的 Docker 镜像集合从 Dockerhub 移植到 AWS 公共 ECR。除了我们用作 Docker-in-Docker 服务的标准 Docker 镜像之外,一切都按其应有的方式运行。从 Dockerhub 拉取时可以正常工作的相同镜像在从公共 ECR 拉取时无法登录。

.gitlab-ci.yml

    build-push:
      stage: package
      image: public.ecr.aws/x/x
      services:
      - public.ecr.aws/x/docker-dind:20.10
Run Code Online (Sandbox Code Playgroud)
$ aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_DOCKER_REGISTRY_URL
> Logging in to Docker registry...
> error during connect: Post http://docker:2375/v1.24/auth: dial tcp: lookup docker on 8.8.8.8:53: no such host
Run Code Online (Sandbox Code Playgroud)
$ cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services gitlab docker amazon-ecr

19
推荐指数
3
解决办法
5万
查看次数

通过 docker volume 共享 unix socket - 权限被拒绝

我尝试php5-fpm通过卷与我的nginx网络服务器共享我的套接字。Fpm 和 nginx 在不同的容器中运行,我想让它们通过共享卷工作,我将 fpm 中的套接字文件放在那里。

2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev"
Run Code Online (Sandbox Code Playgroud)

我已经尝试将权限设置为 777 并将组更改php5-fpm.socketwww-data.

fpm 容器的 Dockerfile

FROM ubuntu:13.10

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y php5-cli php5-common
RUN apt-get install -y php5-fpm php5-cgi

ADD ./php-fpm.conf /etc/php5/fpm/php-fpm.conf
ADD ./pool.d/www.conf /etc/php5/fpm/pool.d/www.conf
ADD ./php.ini /etc/php5/fpm/php.ini

CMD ["/usr/sbin/php5-fpm"] …
Run Code Online (Sandbox Code Playgroud)

nginx socket docker

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

如何在 Google Kubernetes Engine 中选择 Kubernetes 负载均衡器的外部 IP 地址

我正在使用 Google Kubernetes Engine 部署一个网络应用程序,我想通过负载均衡器在我作为 Google Cloud Platform 中同一项目的一部分控制的现有静态 IP 地址上访问它,因为我想使用域名已经指向这个IP。

我用于 pod 的 yaml 文件是:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: gcr.io/my-project/my-app:latest
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法设置负载平衡器:

apiVersion: v1
kind: Service
metadata:
  name: my-load-balancer
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: my-app
  type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)

这提供了一个可以访问应用程序的外部 IP,但我找不到任何方法来配置它以使用我想要的 IP。该服务的文件提到了spec.clusterIP设置,但这似乎并没有涉及到的外部IP。同样,一旦设置了负载均衡器,服务的 status.loadBalancer.ingress.ip 字段就会设置为其外部 IP 地址,但这似乎不是一个可配置的设置。

作为替代方案,我尝试在 Google Compute Engine 控制台中手动创建转发规则,将来自静态 IP 地址的流量定向到 Kubernetes 设置的目标池,但是当我尝试连接时,连接被拒绝。

有什么方法可以做我想做的事 - 在选定的静态 IP 地址上在 Google Kubernetes 引擎上公开 Kubernetes …

docker google-compute-engine kubernetes google-cloud-platform google-kubernetes-engine

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

Docker exec/run shell 命令嵌套

用例的简短介绍:

我正在使用docker容器来运行我的go测试go test ./...。这可以使用 轻松实现docker exec <container> /bin/sh -c "go test ./..."。不幸的是go test ./...运行在所有子目录中,我想排除一个(供应商目录)。

建议的解决方案是使用以下命令:go test $(go list ./... | grep -v '<excluded>',不知何故这让我得到以下结果:

docker run golang:1.6.2-alpine /bin/sh -c "go test " (我已经在 run 和 exec 上对此进行了测试,但它们可能使用相同的核心)。

当我使用 ssh 进入容器docker exec -it <container_id> /bin/sh并运行完全相同的命令时,它就像一个魅力。

似乎通过 docker exec/run 执行 shell 命令不支持任何嵌套的命令$()

bash docker

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

码头工人和岸边

我在我的服务器上使用Shorewall作为简单的独立防火墙,并且也想使用Docker

通过使用 Docker 容器及其端口重定向, docker 设置了自己的 iptables 规则/链,如果 shorewall 重新启动,这些规则/链将被终止。所以容器将变得无法访问

有没有人在 shorewall 重启后设法保存/恢复 docker 规则,或者有没有其他解决方法?

也可以看看:

shorewall docker

17
推荐指数
2
解决办法
6655
查看次数

无需停机即可更新 Docker 容器

假设我有一个带有 Web 服务器的 Docker 容器(如 Apache 2)。现在我想更新它下的操作系统。这个 SF answer说最好的方法是重建基础镜像和我的 Apache 镜像。但是部署镜像意味着停机,因为我必须在创建新容器之前删除旧容器,所以只有一个容器绑定到端口 80/443。

但是,如何在零停机时间的情况下部署此更新?我应该使用负载平衡器并使用容器间通信吗?以及如何更新负载均衡器?

uptime docker coreos

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

Kubernetes 总是提供 503 Service Temporously Unavailable 与多个 TLS Ingress

我在 Amazon Web Services 上由 kops 设置了一个 kubernetes 集群

我有 2 个站点设置。一个是通过 SSL/TLS/https 保护的,另一个是 http。两者都是 Wordpress 网站。域已更改以保护站点身份

入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-rules
spec:
  tls:
  - hosts:
    - site1.com
    secretName: site1-tls-secret
  - hosts:
    - www.site1.com
    secretName: site1-tls-secret
  rules:
  - host: site1.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site1
          servicePort: 80
  - host: www.site1.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site1
          servicePort: 80
  - host: blog.site2.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site2
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

入口服务 …

amazon-web-services docker kubernetes

17
推荐指数
3
解决办法
4万
查看次数

将 SSHFS 卷挂载到 Docker 实例中

我使用 SSHFS 在我的主机上挂载一个远程文件系统,我希望能够从 Docker 容器内部访问它。

我挂载远程文件系统

sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) user@remote:directory /path/to/sshfs

而且,使用 Docker,根据我的使用情况,我收到以下错误--mount

docker run  -it -v /path/to/sshfs:/target myimage bash
docker: Error response from daemon: error while creating mount source path '/path/to/sshfs': mkdir /path/to/sshfs: file exists.
Run Code Online (Sandbox Code Playgroud)

-v

docker run -it  --mount src=/path/to/sshfs,target=/target,type=bind  myimage bash
docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /path/to/sshfs.
See 'docker run --help'
Run Code Online (Sandbox Code Playgroud)

是否可以将 sshfs 挂载点挂载到容器中?

ssh mount fuse sshfs docker

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

docker - 卷 vs 挂载绑定。有哪些用例?

在阅读并使用 docker 一段时间后,我正在考虑在我的生产环境中使用它。但是,我仍在尝试了解挂载绑定和卷之间的区别。

根据关于挂载绑定的 Dockers 文档(https://docs.docker.com/storage/bind-mounts/):

自 Docker 早期以来,绑定挂载就已经存在。与卷相比,绑定挂载的功能有限。使用绑定挂载时,主机上的文件或目录会挂载到容器中。文件或目录由其在主机上的完整或相对路径引用。相比之下,当您使用卷时,会在主机上的 Docker 存储目录中创建一个新目录,由 Docker 管理该目录的内容。

从这个(以及从玩弄)在我看来,挂载绑定和卷是一回事,唯一的区别是数据的位置。(卷存储在 docker 的“私有”存储区,而 mount 绑定可以存储在任何地方)。是的,在启动 docker 容器之前必须存在 mount bind,而当容器启动时,docker 引擎可以创建卷 - 但这种差异是不敬的性能或维护明智的。

我无法理解文档 ( https://docs.docker.com/storage/volumes/ )所述卷的所谓好处,因为它们似乎都同样适用于安装绑定。

任何人都可以解释卷和安装绑定(性能和维护方面)之间的主要区别,最重要的是它们的用例?

谢谢您的帮助。

docker

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