我想重命名一个docker-compose项目(即通过重命名目录或添加-p new_name到docker-compose).如果我这样做,我将删除所有旧容器以及所有旧容器.有没有办法保留卷并将它们附加到新的docker-compose容器?
例 docker-compose.yml
version: '3'
services:
dashboard:
build: custom_dashboard
volumes:
- dashboard:/var/lib/grafana
ports:
- 3000:3000
volumes:
dashboard:
Run Code Online (Sandbox Code Playgroud)
项目名称(和目录名称)是web,我想将其更改为grafana.卷名称是web_dashboard和将来的grafana_dashboard.
我可以手动完成,但我有一个非常庞大的docker-compose(但模块化)文件,有大约30个应用程序.
如何将 DockerNAT 虚拟交换机用于 Hyper-V 虚拟机,以便它可以与其他 docker 容器“对话”并像在 MobyLinux 虚拟机中一样启用互联网访问?
很长的故事:
我想通过 Hyper-V 在我的 Windows Server 主机上安装Univention。在我的主机上,一个 nginx docker 容器也作为代理运行。如果有人调用univention.domain.com它应该自动重定向到我的 hyper-v Univention VM。当我将 Hyper-V 机器的网络适配器设置为DockerNAT,然后给它 IP 地址10.0.75.100作为 DockerNAT 的网关地址和 MobyLinux10.0.75.1的 IP 地址时,这有效10.0.75.2。当我现在10.0.75.100从我的 nginx 容器ping 时,它可以工作。
但是由于 Univention 需要 Internet 连接来安装应用程序,我对这种配置不太满意,因为我在使用DockerNAT网络接口时无法连接到 Internet 。
然后另一方面,我可以从 nginx 容器(在 MobyLinux 的 hyper-v VM 中作为 linux 容器运行) fe 进行 ping 操作8.8.8.8。所以 Docker 创建的 MobyLinux 容器必须可以访问互联网,对吗?虽然它也使用了DockerNAT接口。但它设置为“内部”虚拟交换机,并且我的主 NIC …
当我尝试从 RaspberryPi 上的 Linux 中的串行端口 (uart) 读取数据时,在循环中我总是获得 5-10% 的 CPU 负载。由于串行端口应该是阻塞的,所以这不应该使用那么多的CPU负载,还是我错了?
我尝试了两个代码:
var port = new SerialPort("/dev/ttyUSB0", 57600);
port.Open();
while (true)
{
if (port.BytesToRead > 0)
{
while (port.BytesToRead > 0)
Console.Write($"{port.ReadByte().ToString("X2")} ");
Console.WriteLine("");
}
Thread.Sleep(100);
}
Run Code Online (Sandbox Code Playgroud)
static int blockLimit = 100;
static void Main(string[] args)
{
var port = new SerialPort("/dev/ttyUSB0", 57600);
port.Open();
byte[] buffer = new byte[blockLimit];
Action kickoffRead = null;
kickoffRead = delegate
{
port.BaseStream.BeginRead(buffer, 0, buffer.Length, delegate (IAsyncResult ar)
{
try
{
int actualLength …Run Code Online (Sandbox Code Playgroud) 我刚刚发现,可以使用is-keywordin C# 对可空结构进行空检查。我认为它看起来很干净并且很好理解,但它也有性能吗?口译员是否必须双重投射它或者这样可以吗?
static void Main(string[] args)
{
DateTime? test = null;
PrintDT(test);//wont print
test = DateTime.Now;
PrintDT(test);//will print
}
private static void PrintDT(DateTime? dt)
{
if (dt is DateTime a)
Console.WriteLine(a);
}
Run Code Online (Sandbox Code Playgroud)