小编Dou*_*oug的帖子

如何在 Windows Server 2016 上运行 Linux Docker 容器?

我得到:

PS C:\tmp> docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
no matching manifest for windows/amd64 in the manifest list entries
Run Code Online (Sandbox Code Playgroud)

现在,在你说“复制!”之前,“确保它处于实验模式”,就像这个问题的所有其他答案一样,我.

我已按照基于 LinuxKit 的 LCOW 映像的说明进行操作,甚至阅读并按照步骤从在 Windows 上运行 Linux 容器手动创建 hyper-v 映像。

我已经下载了 Docker 的夜间版本。

我在实验模式下运行:

PS C:\tmp> docker version
Client:
 Version:       master-dockerproject-2018-02-01
 API version:   1.36
 Go version:    go1.9.3
 Git commit:    26a2a459
 Built: Thu Feb  1 23:50:28 2018
 OS/Arch:       windows/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      master-dockerproject-2018-02-01 …
Run Code Online (Sandbox Code Playgroud)

docker

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

如何通过主机名而不是 ip 链接 redis 集群中的节点?

Redis 集群要求所有节点都能看到对方聊天;为了适应一些琐碎的情况(例如,所有节点都公开的 docker),提供了一些额外的配置选项:

cluster-announce-ip 10.1.1.5
cluster-announce-port 6379
cluster-announce-bus-port 6380
Run Code Online (Sandbox Code Playgroud)

(有关这些选项的唯一可用文档,请参阅http://download.redis.io/redis-stable/redis.conf

请注意,这些值被硬编码到配置文件中。这是非常不方便的。

是否可以以某种方式将 redis 配置为使用主机名而不是端点的 IP?有什么解决方法吗?

作为为什么需要这样做的具体示例,请考虑尝试通过 Dockerfile 在单个容器上具有多个 redis 实例的 docker 镜像中配置测试 redis 集群:

  • 如果cluster-announce-ip设置了,则所有节点都尝试通过 进行聊天cluster-announce-ip

  • 如果cluster-announce-ip是外部IP,由于docker镜像在运行-p期间没有运行docker build...,外部IP不可用,无法配置集群。

  • 如果cluster-announce-ip未设置,则可以配置集群,但由于 ip 是 docker-internal,一旦集群运行,就无法从外部看到它(外部客户端会在收到MOVED 10.0.0.x:2321外部客户端不可见的a 时抱怨)。

  • 您必须使用docker build ...然后手动配置节点来docker commit ...对结果进行快照。\

  • 当您在不同的物理主机上运行容器时,您必须手动更新映像以更改公告 ip(使用 DHCP 时,这变得更加成问题)。

我很欣赏 docker swarm 是解决这个问题的一种可能的解决方案,但对于测试目的(例如本地开发),它不是一个相关的解决方案。

简单地使用主机名而不是 ips 将允许开发人员只使用主机文件条目进行连接,而不必为每个开发人员手动更新 docker 映像(显然每个开发机器都有自己的外部 ip)。

redis

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

标签 统计

docker ×1

redis ×1