好的,我有第三方的要求,要从特定IP运行工作负载(以便他们可以将其列入白名单)。我可以为我的ACI容器分配保留的IP吗?
在使用 Azure ACI 在 azure 中配置容器实例后,是否有人尝试过更新现有的环境变量值?
目前,似乎无法使用门户或 Azure CLI 来更新它们。
提前致谢。
我必须通过静态出站 IP 同步一些数据,我需要事先将这些数据列入数据提供商的白名单。因此,我想为 ACI(Azure 容器实例)配置静态出站 IP 地址。如果没有经济高效的方法来执行此操作,我也可以决定将其配置为应用服务 Web 应用程序,但是,由于资源隔离,ACI 是首选。(因此,一名行为不端的工人无法让整个工人池瘫痪。)
作为参考,这里是我想要实现的目标的简单图表。为简单起见,我将 Web Apps 和 ACI 添加到映像中,但我只需要其中之一,最好是 ACI。
我在过去几天阅读了相关的微软文档,所以我知道有多种方法可以做到这一点,但是,令我惊讶的是官方解决方案比我想象的要复杂和昂贵得多。
我尝试过的事情
为应用服务 Web 应用配置 NAT
这可行,但不是所需的解决方案。我可以将 Web 应用程序放入 vNet 中的子网中,然后使用该子网的静态 IP 地址配置NAT 网关。这按预期工作,运行
curl api.ipify.org.
Run Code Online (Sandbox Code Playgroud)
Web 应用程序内将返回我在 NAT 网关中配置的静态 IP 地址。此方法的问题在于,它使用的 Web 应用程序在同一应用程序服务计划上的应用程序之间没有资源使用隔离。
使用 ACI 在 vNet 前面部署防火墙
这是文档中建议的“官方方法”。(顺便说一句,我永远无法按照指南使其工作,但这不是主要问题。)我的主要问题是复杂性和价格。我们不需要防火墙,添加一个防火墙和管理它的负担是我们在这个特定项目中不需要的额外复杂性。价格也很荒谬,我们想要配置一个静态出站 IP,而建议的方式所带来的价格涨幅比我们为应用程序的其余部分支付的价格还要大。(我们每月支付约 400 美元,防火墙起价约 600 美元。)
所以这不是首选。
在包含 ACI 的 vNet …
我有一个基于托管BackgroundService模型的Azure容器应用程序。它本质上只是一个长时间运行的控制台应用程序,它覆盖该BackgroundService.ExecuteAsync方法并等待停止信号(通过传递的取消令牌)。当我在 Docker 中本地运行时,它是完美的 - 一切都按预期运行。当我部署为 Azure 容器应用程序时,它会部署并运行 - 尽管我必须手动将最小规模设置为 1 才能让它运行 - 但它每 30 秒左右重新启动一次,这显然不理想。我的猜测是,Azure 容器应用程序 docker 主机正在以某种方式检查我的实例的运行状况,但不满意,因此尝试重新启动它?只是一个猜测。我缺少什么?
using FR911.DataAccess.Repository;
using FR911.Infrastructure.Commands;
using FR911.Utils;
using FR911.Utils.Extensions;
using SimpleInjector;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddFR911Log4NetConfig();
services.AddTransient<ICommandProcessor, CommandProcessor>();
Container container = new Container();
container.Register(typeof(ICommandHandler<,>), new List<Type>()
{
//typeof(CacheSyncCommandHandler),
});
#if DEBUG
container.Verify();
#endif
services.AddSingleton<Container>(container);
services.AddHostedService<Worker>();
})
.Build();
await host.RunAsync();
Run Code Online (Sandbox Code Playgroud)
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private ICommandProcessor _commandProcessor;
public Worker(ILogger<Worker> logger, ICommandProcessor …Run Code Online (Sandbox Code Playgroud) 我使用Azure容器注册表来存储我的私有docker镜像和Azure容器实例来部署它.
我得到一个公共IP地址,可用于验证和简单预览,但不可用(或可与客户共享),因为IP地址是动态的.
有没有办法设置我可以使用的完全限定的域名,而不是在每个容器重启时更改IP地址?
浏览文档并未透露任何相关信息.
这似乎没有在Microsoft门户网站上也未列出,也未在其他任何地方得到解答-因此我可能误解了Azure中如何配置和/或计算此值,但是;
使用Azure容器注册表中的映像实例化Azure中的容器实例,如何为磁盘空间计费?我了解按秒计费的全部内存/ CPU,但是正在运行的实例占用的磁盘空间如何?
官方文档对此似乎很含糊。
我正在创建一个 Azure 容器实例来托管用于测试目的的索引。目前我只能让它在 IpAddressType 设置为 Public 的情况下工作,但这当然使索引可供全世界使用。
是否可以通过 IP 限制来保护 Azure 容器实例,最好使用 PowerShell?
当我将容器映像配置为 IpAddressType 设置为 Private 时,我无法访问索引。
下面是我用来创建容器实例的命令:
New-AzureRmContainerGroup -ResourceGroupName $resourceGroup `
-Name indexcontainer `
-Image $image `
-IpAddressType Public `
-Location $resourceGroupLocation `
-MemoryInGB 6 `
-Cpu 2 `
-Port 9200
Run Code Online (Sandbox Code Playgroud) 我有一个基于 .NET Framework v4.8 构建的控制台应用程序。我正在尝试使用 docker 映像在 Azure 容器实例(ACI)中运行它。我在本地创建了一个 docker 镜像并将其推送到 ACI,并且运行成功。
现在我面临一个问题。此应用程序发送一封包含 RDLC 报告的电子邮件。但是我在邮件中收到的报告的字体与我之前收到的报告(没有 docker)不同。我发现mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019我正在使用的基本 docker 映像没有加载字体。我需要在我的 docker 镜像/容器中安装字体。我怎样才能做到这一点?
以下是我的 Dockerfile 命令:
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 AS BASE
COPY . .
ENTRYPOINT BackgroundService.exe
Run Code Online (Sandbox Code Playgroud) containers docker windows-container azure-container-instances .net-4.8
我正在尝试使用 azure 容器实例设置 mongo DB 实例并将其安装在 Azure 文件共享上。
我们收到以下错误:
[initandlisten] WiredTiger error (1) [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1579245437:724939][1:0x7f9419c67b00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
W STORAGE [initandlisten] Failed to start up WiredTiger under any compatibility version.
F STORAGE [initandlisten] Reason: 1: Operation not permitted
F - [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 789
[initandlisten]
***aborting after fassert() failure
Run Code Online (Sandbox Code Playgroud)
AZ 命令我使用以下命令来创建存储帐户、文件共享和容器实例:
az storage account create -g $resourcegroup -n $storageaccount --sku Standard_LRS …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 azure 容器实例上部署 PostgresDatabase。要使用绑定安装在docker上部署(因为Azure容器实例仅支持绑定安装),我使用以下命令,并将其部署在docker上。
docker run -d -p 5434:5432 --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -e PGDATA=/var/lib/postgresql/data/pgdata -v /home/ubuntu/volum:/var/lib/postgresql/data postgres
如果我做类似的事情来部署在Azure容器实例上
az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name postgreariesdb25-1 \
--location eastus \
--image postgres \
--dns-name-label $ACI_DNS_LABEL \
--environment-variables POSTGRES_PASSWORD=mysecretpassword PGDATA=/var/lib/postgresql/data/pgdata \
--ports 5432 \
--azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
--azure-file-volume-mount-path /var/lib/postgresql/data
Run Code Online (Sandbox Code Playgroud)
我在 Azure 容器的日志中收到以下消息
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process. …Run Code Online (Sandbox Code Playgroud)