Bagaimana saya bisa membiarkan semua kontainer buruh pelabuhan menggunakan proxy saya?

18

Saya menjalankan buruh pelabuhan di Debian Jessie yang berada di belakang proxy perusahaan. Untuk dapat mengunduh gambar buruh pelabuhan, saya perlu menambahkan yang berikut ke blog saya/etc/defaults/docker

http_proxy="http://localhost:3128/"

Saya dapat mengkonfirmasi bahwa ini berfungsi.

Namun, untuk dapat mengakses interwebz dari dalam wadah saya, saya harus memulai semua sesi dengan --net hostdan kemudian mengatur variabel env ini:

export http_proxy=http://localhost:3128/
export https_proxy=https://localhost:3128/
export ftp_proxy=${http_proxy}

Idealnya, saya ingin agar wadah tidak memerlukan jaringan host, dan tidak tahu tentang proxy (yaitu semua panggilan keluar ke port 20, 80, 443 dalam wadah melalui port proxy host). Apakah itu mungkin?

Jika gagal, apakah mungkin untuk memiliki pengaturan situs, yang akan memastikan bahwa variabel env ini diatur secara lokal tetapi tidak pernah diekspor sebagai bagian dari gambar?

UPDATE : Saya tahu saya bisa melewati hal-hal ini dengan --env http_proxy=...dll, tapi itu kikuk. Saya ingin ini berfungsi untuk semua pengguna di sistem tanpa harus menggunakan alias.

fommil
sumber

Jawaban:

5

Lihat jawaban SO ini :

Server host menjalankan wadah yang menjalankan proxy (squid, dalam hal ini) yang dapat melakukan proxy transparan. Wadah itu memiliki beberapa aturan iptables yang lalu lintas NAT ke server proxy - ini artinya wadah harus dijalankan dalam mode istimewa.

Server host juga berisi (dan inilah keajaibannya) entri tabel rute ip yang merutekan ulang semua lalu lintas dari wadah apa pun kecuali proxy yang diperuntukkan untuk port 80, melalui wadah proxy.

Bit terakhir itu pada dasarnya berarti bahwa untuk lalu lintas port 80, rute dari peti kemas ke seluruh dunia melewati wadah proksi - memberikan kesempatan kepada NAT dan proksi transparan.

https://github.com/silarsis/docker-proxy

laktak
sumber
Ini tidak akan berfungsi untuk "https".
ceving