Mac'te konteyner ağları nasıl çalışır
macOS Linux konteynerlerini doğrudan çalıştıramaz; bu yüzden Mac'teki her konteyner uygulaması onları Linux tarafında çalıştırır ve Mac ile aralarında trafik iletir. Üç yol önemlidir:
- Gelen trafik: Mac'te yayınlanan port bir konteynere yönlendirir.
- Giden trafik: konteyner internete, şirket ağınıza veya Mac'teki bir servise bağlantı açar.
- Adlar: konteyner bir ana makine adını çözümler.
Bu yollar Mac'in kendi ağını atladığında VPN rotaları uygulanmaz, kurum içi ana makine adları çözümlenmez ve güvenlik duvarı hangi uygulamanın iletişim kurduğunu göremez. Oxcart bunu önleyecek şekilde tasarlanmıştır.
Giden trafik: VPN, DNS ve güvenlik duvarınız geçerliliğini korur
Oxcart, konteynerlerden ve derleme adımlarından çıkan IPv4 ve IPv6 TCP trafiğini Mac'e yönlendirir; Mac bağlantıyı kendi soketleriyle açar. VPN istemcinizin eklediği rotalar dahil Mac'in yönlendirme tablosu nereye gideceğini belirler. Oxcart Mac rotalarını, VPN ayarlarını veya güvenlik duvarı tercihlerini değiştirmez.
Adres sorguları (A ve AAAA), /etc/hosts ve VPN'inizin yapılandırdığı çözümleyici seçimi dahil macOS sistem çözümleyicisini kullanır; böylece şirket ana makine adları konteynerlerde tarayıcınızdaki gibi çözümlenir. Konteyner adları kendi Docker ağlarıyla sınırlı kalır; DNS, UDP ve TCP üzerinden çalışır.
Little Snitch, LuLu ve uç nokta ajanları
Ağ filtresi, yeni bir programın ilk bağlantısını size sorarken genellikle yaklaşık iki saniye bekletir. Oxcart bunu beklemez: ana bağlantı doğrulanana kadar bağlantılar alternatif yolu kullanır; yavaş veya başarısız bağlantı kendiliğinden alternatif yola geçer ve art arda üç hata, yeniden denenmeden önce bağlantıyı 30 saniye devre dışı bırakır. Filtrenizde Oxcart'a bir kez izin verin; sonrasında kuralları uygulanır.
Gelen trafik: yayınlanan portlar
Portları normal Docker sözdizimiyle yayınlayın:
# Mac loopback only (recommended for development)
docker run -d -p 127.0.0.1:8080:80 nginx
# Ephemeral host port, UDP
docker run -d -p 127.0.0.1::9000/udp my-udp-service
# IPv4 and IPv6 listeners on the Mac
docker run -d -p "[::]:8080:80" nginx Adres belirtilmeyen bağlama Mac'in tüm IPv4 adreslerinde dinler; macOS güvenlik duvarı engellemedikçe ağdaki diğer makinelerden erişilebilir. TCP ve UDP aynı host port numarasını kullanabilir. Yayınlanan dinleyiciler konteyner durduğunda serbest bırakılır.
Yayınlanan portlar motorun kendi localhost adresinde de yanıt verir; böylece konteynerde çalıştırdığınız kayıt deposuna push yapabilirsiniz:
docker run -d -p 127.0.0.1:5000:5000 --name registry registry:2
docker tag my-app localhost:5000/my-app
docker push localhost:5000/my-app Ports görünümü: port neden yanıt vermiyor
Oxcart'ın Ports görünümü, aynı projenin iki çalışma kopyasının karışmaması için Mac'inizdeki tüm dinleyicileri ve konteyner portlarını depo, çalışma ağacı ve dala göre gruplar. Her bağlama hazır, beklemede veya hatalı olarak nedeniyle birlikte gösterilir:
- adres Mac'te zaten kullanılıyor;
- konteynerdeki sunucu yalnızca
127.0.0.1üzerinde dinliyor; - bu portu henüz hiçbir şey dinlemiyor.
Diğer makinelerin erişebildiği portlar işaretlenir. Kodlama ajanınız aynı bilgiyi Oxcart'ın MCP ports aracıyla görür; Yapay zekâ kodlama ajanları için Docker rehberine bakın.
Konteynerden Mac'e erişim
host.docker.internal, konteynerlerde ve derleme adımlarında çözümlenir; TCP üzerinden Mac'in 127.0.0.1 adresine bağlı servislere ulaşır. Konteyneri Mac'te yerel olarak çalışan veritabanına veya geliştirme sunucusuna yönlendirin:
docker run --rm curlimages/curl http://host.docker.internal:3000/health Bunu bilinçli olarak açılan erişim sayın: çalıştırdığınız her konteyner Mac'in loopback servislerine bu şekilde ulaşabilir. Bu yüzden güvenmediğiniz konteynerleri çalıştırırken 127.0.0.1 üzerinde kimlik doğrulamasız yönetim servisleri bırakmayın.
Mac ile motor arasındaki şifreli bağlantı
Mac ile Linux tarafı arasındaki trafik, macOS'un aynı Mac'teki diğer sanallaştırma yazılımlarıyla paylaştığı sanal ağdan geçer. Oxcart, yayınlanan ve giden TCP trafiğini bu bağlantıda TLS 1.3 (TLS_AES_128_GCM_SHA256) içinde taşır; her motor başlangıcında yeni oluşturulan sertifikaya sabitlenir ve her başlangıç için 256 bit bearer token kullanılır. Geçersiz token bağlantıyı kapatır; Linux tarafı Mac'in adresinden gelmeyen bağlantıları TLS başlamadan kapatır.
Ele alınan tehdit: paylaşılan ağdaki başka yazılımların adres taklidiyle trafiği okuması veya trafik enjekte etmesi ya da konteynerlerinize yeni bağlantılar açması. Konuk güvenlik duvarı da bu yazılımları yayınlanmamış konteyner portlarından ve iç çözümleyiciden uzak tutar. Bu bağlantıda şifrelemenin bir maliyeti vardır ve bunu bilinçli olarak seçtik. Docker API'ın kendisi hiçbir zaman ağdan geçmez: özel bir Unix soketidir ve yayınlanan port yoksa Oxcart Mac'te TCP veya UDP soketi tutmaz.
Mevcut sınırlar
- Host ağ modu (
--network host) ve IPv6 konteyner ağları uygulanmamıştır; konteynerlerin IPv4 adresleri vardır. host.docker.internalTCP taşır; host ağ geçidine UDP uygulanmamıştır.- Yayınlanan TCP ve UDP istemci adresini korumaz: konteyner karşı uç olarak Linux tarafını görür.
- Adres dışı DNS kayıtları (SRV ve TXT gibi), macOS bölünmüş DNS yerine ağın DHCP çözümleyicilerini kullanır.
Sorun giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
localhost:PORT üzerinde bağlantı reddedildi | Sunucu konteynerin içinde 127.0.0.1 üzerinde dinliyor | 0.0.0.0 üzerinde dinleyin; Ports görünümü bu durumu belirtir |
| "port is already allocated" | Host portunu başka bir süreç veya konteyner kullanıyor | Başka host portu seçin; Ports görünümü sahibini gösterir |
| Konteynerde kurum içi ana makine adı çözümlenmiyor | Ad yalnızca VPN'inizin DNS'inde var | Mac'te VPN'e bağlanın; adres sorguları Mac'in çözümleyicisini izler |
| Konteyner Mac'teki geliştirme sunucusuna ulaşamıyor | Konteynerin içinde localhost kullanılıyor | host.docker.internal kullanın |
| İlk çekme işlemi birkaç saniye duraklıyor | Ağ filtresi yeni bağlantı için izin istiyor | Oxcart'a bir kez izin verin; bu sırada bağlantılar alternatif yolu kullanır |
| Ekip arkadaşları geliştirme portunuza erişebiliyor | Adres belirtilmeden yayınlanmış | 127.0.0.1 üzerinde yayınlayın |
Sorular
Mac'teki Docker konteynerleri VPN'imi kullanır mı?
Oxcart'ta evet. Konteynerlerin dış bağlantılarını Mac'in kendisi açar; böylece Mac'in rotaları, VPN'i, adres sorguları için bölünmüş DNS'i ve uygulama bazlı güvenlik duvarı bunlara uygulanır. Oxcart Mac rotalarını, VPN ayarlarını veya güvenlik duvarı tercihlerini değiştirmez.
Konteynerden Mac'imdeki servise nasıl ulaşırım?
host.docker.internal kullanın. Oxcart'ta konteynerlerden ve derleme adımlarından TCP üzerinden Mac'in 127.0.0.1 adresine bağlı servislere ulaşır. --add-host mac:host-gateway aynı adres için başka bir ad sağlar.
Konteynerin çalıştığını gördüğüm halde portuna neden erişemiyorum?
Genellikle konteynerin içindeki sunucu, yayınlanan portların ulaşamadığı 127.0.0.1 üzerinde dinler; 0.0.0.0 üzerinde dinlemesini sağlayın. Diğer nedenler host portunun kullanımda olması veya henüz hiçbir şeyin dinlememesidir. Oxcart'ın Ports görünümü hangisi olduğunu gösterir.
Oxcart, Little Snitch ve LuLu ile çalışır mı?
Evet. Ağ filtresi size sorarken Oxcart'ın ilk bağlantısını beklettiğinde bağlantılar, ana bağlantı doğrulanana kadar alternatif yolu kullanır; hiçbir şey bozulmaz veya yanıtınızı beklemez. Yavaş veya başarısız bağlantı kendiliğinden alternatif yola geçer.
Mac'imde konteyner trafiği şifrelenir mi?
Mac ile Oxcart motoru arasındaki yayınlanan ve giden TCP, her motor başlangıcında oluşturulan sertifikaya sabitlenmiş TLS 1.3 içinde, başlangıç başına 256 bit token ile taşınır. Bu, bağlantıyı Mac'in paylaşılan ağındaki diğer sanallaştırma yazılımlarından korur. İnternet trafiğini uygulamanın kendisinin kullandığı HTTPS gibi yöntemler korur.
Yayınladığım portlar ağdaki diğer makinelerden görünür mü?
Adres belirtilmeden yayınlanan port Mac'in tüm IPv4 adreslerinde dinler; macOS güvenlik duvarı engellemedikçe diğer makineler erişebilir. Erişimi Mac'inizle sınırlamak için 127.0.0.1 üzerinde yayınlayın. Oxcart, diğer makinelerin erişebildiği portları işaretler.
Oxcart konteynerler için host ağını veya IPv6'yı destekler mi?
Hayır. Host ağ modu ve IPv6 konteyner ağları uygulanmamıştır. Konteynerlerin IPv4 adresleri vardır; portlar yine de "[::]:8080:80" ile IPv6 üzerinde yayınlanabilir.
Kaynaklar ve yöntem
Burada açıklanan ağ davranışı, giden TCP, DNS, yayınlanan portlar, host erişimi ve Mac-konteyner bağlantısındaki TLS dahil, 10 Ekim 2026 tarihinde Oxcart'ta test edildi.