Я провел немного больше исследований и, похоже, использовал лучшие ключевые слова, потому что нашел свое решение сейчас. Я хотел поделиться этим решением со всеми, на случай, если кому-то еще это понадобится.
mkdir /etc/systemd/system/docker.service.d
/etc/systemd/system/docker.service.d/http-proxy.conf
и добавить следующее в новый создан файл [Service]
# NO_PROXY is optional and can be removed if not needed
# Change proxy_url to your proxy IP or FQDN and proxy_port to your proxy port
Environment="HTTP_PROXY=http://proxy_url:proxy_port" "NO_PROXY=localhost,127.0.0.0/8"
Перезагрузите systemctl, чтобы прочитать новые настройки
sudo systemctl daemon-reload
Verify среда окружения правильно настроена
sudo systemctl show docker --property Environment
Перезапустите службу докера, чтобы использовать обновленные параметры среды
sudo systemctl restart docker
Теперь вы можете выполнить команду docker-compose
на вашем компьютере, не получая сообщений об ошибках connection refused
.
Я нашел этот класс на форуме, который работает. Просто используйте это вместо BindingList
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Threading;
namespace Utility
{
public class ThreadedBindingList<T> : BindingList<T>
{
SynchronizationContext ctx = SynchronizationContext.Current;
protected override void OnAddingNew(AddingNewEventArgs e)
{
if (ctx == null)
{
BaseAddingNew(e);
}
else
{
ctx.Send(delegate
{
BaseAddingNew(e);
}, null);
}
}
void BaseAddingNew(AddingNewEventArgs e)
{
base.OnAddingNew(e);
}
protected override void OnListChanged(ListChangedEventArgs e)
{
// SynchronizationContext ctx = SynchronizationContext.Current;
if (ctx == null)
{
BaseListChanged(e);
}
else
{
ctx.Send(delegate
{
BaseListChanged(e);
}, null);
}
}
void BaseListChanged(ListChangedEventArgs e)
{
base.OnListChanged(e);
}
}
}
Так как я потратил время, чтобы отформатировать образец для своих нужд, я мог бы также опубликовать его здесь как читабельный справочник. Ничего не изменилось, кроме форматирования.
using System.ComponentModel;
using System.Threading;
namespace Utility
{
public class ThreadedBindingList : BindingList
{
SynchronizationContext ctx = SynchronizationContext.Current;
protected override void OnAddingNew(AddingNewEventArgs e)
{
if (ctx == null)
{
BaseAddingNew(e);
}
else
{
ctx.Send(delegate { BaseAddingNew(e); }, null);
}
}
void BaseAddingNew(AddingNewEventArgs e)
{
base.OnAddingNew(e);
}
protected override void OnListChanged(ListChangedEventArgs e)
{
// SynchronizationContext ctx = SynchronizationContext.Current;
if (ctx == null)
{
BaseListChanged(e);
}
else
{
ctx.Send(delegate { BaseListChanged(e); }, null);
}
}
void BaseListChanged(ListChangedEventArgs e)
{
base.OnListChanged(e);
}
}
}