这个有点理论性,但请耐心等待。
目前我有一个服务器运行几个 Docker 容器(4 个或 5 个,取决于日期和时间)。我计划添加另一个,就像第一个一样,甚至可能是第三个。
现在,我的问题是:我应该管理 15 个容器而不是 5 个,使用 Google Kubernetes 有什么好处吗?
此外,是否有“官方”或至少“确定性”的工作流程可以从 Docker 容器迁移到 Kubernetes 的本机单元“pods”。在你问之前,我确实知道 pod 是由容器组成的(有时甚至是一个)。我的主要问题是“dockerfiles”与 pod 配置完全不同。
有任何想法吗?
我有一个带有两个容器的 docker-compose.yml 文件:
containerA:
...
ports:
- "80:9000"
containerB:
...
links:
- containerA
Run Code Online (Sandbox Code Playgroud)
我所期待的是有一个containerA从可达80端口containerB,但它只能通过端口号为9000的唯一可见的80端口从主机的访问。
有没有办法让容器的containerA9000 端口可以通过 80 端口访问它所链接的所有容器,而不仅仅是主机?
有没有办法在前台运行 Postfix?
我想在 docker 中将 Postfix 作为 PID 1 运行。我不想使用任何 bash shell、supervisorD 或任何包装器来启动它。
我只想知道是否有任何方法可以在前台启动它,以便我可以从“docker logs 'container-name'”中检查它的日志
当我手动运行“postfix start”时,它会运行然后在后台启动。有什么办法让它保持在前台?
谢谢
在文档中,它说 VOLUME 指令创建了一个口点,但我创建了一个图像使用
FROM alpine
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
Run Code Online (Sandbox Code Playgroud)
并且我能够在使用的容器文件系统上挂载 /myvol 或任何其他路径,docker run -v vol:/myvol myimage并且能够在主机上的 /var/lib/docker/vol/_data 中查看那里的数据。
添加VOLUME myvol到 Dockerfile 会有什么不同?
当 VPN 在我的主机上启动时,我无法在容器中执行 ping 操作。
我尝试这样做:
docker run adiazmor/docker-ubuntu-with-ping ping 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
VPN 启动时失败,但这有效:
docker run --net=host adiazmor/docker-ubuntu-with-ping ping 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
我不能总是有--net=host选项,因为我们不能links在 docker-compose 中使用。
我使用 IKE 来启动我的 VPN。这是 VPN 的配置(没有可见数据):
n:version:4
n:network-ike-port:500
n:network-mtu-size:1380
n:client-addr-auto:1
n:network-natt-port:4500
n:network-natt-rate:10
n:network-frag-size:540
n:network-dpd-enable:1
n:client-banner-enable:1
n:network-notify-enable:1
n:client-dns-used:1
n:client-dns-auto:0
n:client-dns-suffix-auto:1
n:client-splitdns-used:1
n:client-splitdns-auto:1
n:client-wins-used:1
n:client-wins-auto:1
n:phase1-dhgroup:2
n:phase1-keylen:256
n:phase1-life-secs:86400
n:phase1-life-kbytes:0
n:vendor-chkpt-enable:0
n:phase2-keylen:256
n:phase2-life-secs:28800
n:phase2-life-kbytes:0
n:policy-nailed:0
n:policy-list-auto:0
b:auth-mutual-psk:----
n:phase2-pfsgroup:-1
s:network-host:[network-host-ip]
s:client-auto-mode:pull
s:client-iface:virtual
s:network-natt-mode:enable
s:network-frag-mode:enable
s:client-dns-addr:8.8.8.8,8.8.4.4
s:auth-method:mutual-psk-xauth
s:ident-client-type:address
s:ident-server-type:any
s:phase1-exchange:main
s:phase1-cipher:aes
s:phase1-hash:sha1
s:phase2-transform:esp-aes
s:phase2-hmac:sha1
s:ipcomp-transform:disabled
s:policy-level:auto
s:policy-list-include:0.0.0.0 / 0.0.0.0 …Run Code Online (Sandbox Code Playgroud) 我有一个带有几个 lxc 容器的服务器。在一些容器中安装了 docker。通常在这些LXC容器导致容器名称,格式为泊坞窗撰写的动作appname_service_1,如wordpress_app_1和wordpress_db_1,当app和db两个服务,被称为在wordpress撰写文件-你知道它。
但是今天我创建了另一个 LXC 容器并在其中安装了 docker。由于ansible,设置与其他容器相同。但是,docker 容器名称不同,例如wordpress_db_1_c9de200f9abd. 每当我删除容器并重新创建它时,最后的哈希值都会有所不同。
由于这使得容器不像它们应该的那样一次性,因为它破坏了容器之间的任何路由,我想知道为什么要附加这些哈希。所有 LXC 容器都安装了相同的 docker 和相同的 docker-compose 版本。我想在我的 docker 容器名称中完全阻止这些哈希。
为什么它们现在发生而以前没有发生?
我使用janus-gateway作为用于群组视频通话的 webrtc 媒体服务器。以前我使用 docker-compose 将它部署在单个节点中,但现在我希望能够水平扩展它。为此,我正在尝试使用 kubernetes,但我面临两个问题:
1:指定要为媒体服务器公开的端口范围。由于媒体服务器需要一个端口范围才能运行,我可以在 docker-compose 中使用以下代码进行操作
janus-gateway:
build: ./gateway
image: janus-gateway-image
restart: always
ports:
- 8088:8088
- 8188:8188
- 7088:7088
- "10000-10200:10000-10200/udp"
networks:
- back-tier
Run Code Online (Sandbox Code Playgroud)
但是我无法在 kubernetes 中找到任何替代方案。如何使用 kubernetes 公开端口范围。
2:如何从我的 nodejs 应用程序连接到网关的特定实例。所以假设网关的两个实例正在运行,现在当用户连接到应用程序时,我将它连接到正在运行的两个实例之一并将其保存在 redis 中,并确保来自该用户的任何请求都传递到该特定实例. 如何从节点连接到特定副本?还获取副本列表?
我已经在 kuebernetes 上检查过这个问题,但它仍然没有解决。有什么解决方法吗?
想象一下这个场景。
我如何为这个容器分配 192.168.0.3 的 IP?
我需要服务在他们设计的默认端口上运行。
我不能使用反向代理作为解决方案,因为这并不能解决如何通过 SSH 与 GitLab 实例通信的问题。
在这种情况下,将端口 22 映射到主机上的不同端口是不专业的,我的客户端开发人员不会喜欢这种设置。
如果我正在启动此应用程序的许多实例,这也将很难维护。并且必须为每个容器将每个 SSH 映射到主机上的新端口。
我的客户需要能够在没有额外配置客户端的情况下解析和运行以下内容。
https://GitLab.internal.net.work
ssh git 克隆https://GitLab.internal.net.work
我已经查看了 Docker 网络文档,除非我弄错了,否则我看不到一个易于维护的解决方案(尽管我还是 Docker 的新手)。
如何才能做到这一点?在这种情况下,其他人在做什么作为“最佳实践”?(如果可能,请以 docker-compose 语法的形式给出答案)。
网上有很多关于在 Linux 容器中使用 VNC 的资源,但我找不到适用于 Windows 容器的资源,所以我想我会尝试一下。
可以启动tightVNC服务器(认证禁用),容器中出现5900和5800的监听端口。但是,当客户端查看器尝试建立连接时,我得到的最好结果是 -
因此,我在 TightVNC 服务器上启用了级别 9 日志记录,这是传入连接开始的日志部分。
[ 1808/ 1812] 2019-09-15 09:39:13:181 + Incoming rfb connection from
192.168.1.220 to port 61860
[ 1808/ 1812] 2019-09-15 09:39:13:181 ! Set socket idle timeout, 0 ms
[ 1808/ 1812] 2019-09-15 09:39:13:181 ! Client #0 connected
[ 1808/ 1472] 2019-09-15 09:39:13:182 - Entering RFB initialization phase 1
[ 1808/ 1472] 2019-09-15 09:39:13:183 RFB initialization phase 1 completed
[ 1808/ 1472] 2019-09-15 09:39:13:183 Shared flag = 0
[ …Run Code Online (Sandbox Code Playgroud) 这曾经用于设置时区。我在 Alpine 3.9.4 上有一个容器,它可以工作:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN apk del tzdata
Run Code Online (Sandbox Code Playgroud)
我现在正在使用 Alpine Linux v3.10.3 创建一个 Docker 容器,但它不再工作了。一位用户建议我需要复制到 /etc/localtime:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apk del tzdata
Run Code Online (Sandbox Code Playgroud)
如果tzdata被删除,这些都不起作用。但是,如果tzdata不删除它们,它们会起作用。为什么是这样?
docker ×10
kubernetes ×3
containers ×2
alpine ×1
date ×1
docker-swarm ×1
lxc ×1
postfix ×1
ssh ×1
tightvnc ×1
timezone ×1
vpn ×1
webrtc ×1
windows ×1