我正在尝试估计使用 AWS ECR 的每月费用。它将包括:传出流量成本(下载图像)和存储成本(将图像存储在 ECR 中)。
让我们假设:
第一个问题:如何估算每月的存储量?什么等式是正确的?
每月_Vol_1 = 500+40*300;- 基本图像仅存储一次
每月_Vol_2 = (500+40)*300; - 每个图像都包含基础图像
第二个问题是:如何估算AWS的每月流量?假设下载图像的主机不会删除现有数据。
每月流量_1 = (500+40)*60; -每次下载基础镜像和附加层时
每月流量_2 = 500+40*60;-仅下载第一个图像的基础图像。仅下载应用程序更新
Monthly_Traf_3 = 40*60; - 基础镜像不是从AWS ECR下载的,而是从docker hub下载的
更新:
我在 9 月份将 2 张图像上传到 AWS ECR,并在 2 个月后检查了账单信息。我发现了什么:
仅存储 2 张图像(不进行传输)每月花费我 0.04 美元。根据 AWS ECR 定价(每 1Gb …
在文档中,它说 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 会有什么不同?
只需设置一个 ElasticSearch 容器即可与公司的 Laravel 应用程序一起使用。创建 docker-compose.yml 并运行它是完美且直接的,但是当我想要对这个东西进行防火墙以便只能从提到的 Laravel 应用程序的一个特定 IP 访问它时,就会出现问题。
在研究过程中,我注意到很多人都遇到这些问题,即 Docker 转发的端口流量完全暴露于公众,并且他们无法正确对其进行防火墙设置。
在过去的 6 小时内我找到了几个解决方案,但没有一个有效。我认为这与 Docker 处理/转发入站流量的方式有关,而且我的 iptables 知识并不是那么广泛,因此我可以自己理解发生了什么。
这是我的 docker-compose.yml (就其价值而言):
version: '3.4'
services:
elasticsearch:
image: khezen/elasticsearch:6.1.1
container_name: elasticsearch
environment:
NETWORK_HOST: 0.0.0.0
HOSTS: 127.0.0.1
CLUSTER_NAME: fd-es
NODE_NAME: node-1
HEAP_SIZE: 31g
HTTP_SSL: "true"
ELASTIC_PWD: "somepasswd"
HTTP_CORS_ENABLE: "true"
HTTP_CORS_ALLOW_ORIGIN: /https?:\/\/localhost(:[0-9]+)?/
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./config/elasticsearch.yml:/elasticsearch/config/elasticsearch.yml
- ./data:/elasticsearch/data
- ./logs:/elasticsearch/logs
ports:
- 9200:9200
networks:
- es-network
restart: always
networks:
es-network:
driver: bridge …Run Code Online (Sandbox Code Playgroud) 当 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不删除它们,它们会起作用。为什么是这样?
我尝试了几件事,包括
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Europe/Lnndon
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
Run Code Online (Sandbox Code Playgroud)
但无论我做什么我都会得到
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.
1. Africa 4. Australia 7. Atlantic 10. Pacific 13. Etc
2. America 5. Arctic 8. Europe 11. SystemV
3. Antarctica 6. Asia 9. Indian 12. US
Geographic area:
Run Code Online (Sandbox Code Playgroud)
并且用户输入不起作用(我真的希望这是非交互式的)。
这是完整的 …
docker ×10
containers ×2
kubernetes ×2
alpine ×1
amazon-ecr ×1
date ×1
docker-swarm ×1
iptables ×1
lxc ×1
networking ×1
ssh ×1
storage ×1
tightvnc ×1
timezone ×1
traffic ×1
ubuntu ×1
vpn ×1
webrtc ×1
windows ×1