Saya menginstal Docker di Ubuntu 13.10 (Saucy Salamander) dan ketika saya mengetikkan konsol saya:
sudo docker pull busybox
Saya mendapatkan kesalahan berikut:
Pulling repository busybox
2014/04/16 09:37:07 Get https://index.docker.io/v1/repositories/busybox/images: dial tcp: lookup index.docker.io on 127.0.1.1:53: no answer from server
Versi buruh pelabuhan:
$ sudo docker version
Client version: 0.10.0
Client API version: 1.10
Go version (client): go1.2.1
Git commit (client): dc9c28f
Server version: 0.10.0
Server API version: 1.10
Git commit (server): dc9c28f
Go version (server): go1.2.1
Last stable version: 0.10.0
Saya berada di belakang server proxy tanpa otentikasi, dan ini /etc/apt/apt.conf
file saya :
Acquire::http::proxy "http://192.168.1.1:3128/";
Acquire::https::proxy "https://192.168.1.1:3128/";
Acquire::ftp::proxy "ftp://192.168.1.1:3128/";
Acquire::socks::proxy "socks://192.168.1.1:3128/";
Apa yang saya lakukan salah?
Acquire::socks::proxy
berarti mengatur proxy untuk semua URL yang dimulai dengansocks
skema. Karena Andasources.list
tidak memilikisocks://
URL apa pun , baris itu sepenuhnya diabaikan.docker-compose
?Jawaban:
Berikut ini tautan ke dokumentasi Docker resmi untuk proxy HTTP: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
Garis besar cepat:
Pertama, buat direktori drop-in systemd untuk layanan Docker:
Sekarang buat file bernama
/etc/systemd/system/docker.service.d/http-proxy.conf
yang menambahkanHTTP_PROXY
variabel lingkungan:Jika Anda memiliki pendaftar Docker internal yang perlu Anda hubungi tanpa proxy, Anda dapat menentukannya melalui
NO_PROXY
variabel lingkungan:Perubahan flush:
Verifikasi bahwa konfigurasi telah dimuat:
Mulai Ulang Docker:
sumber
/etc/default/docker
tidak berfungsi. Mungkin saya harus menghapusexport
seperti yang didokumentasikan untuk Centos.sudo systemctl restart docker
sangat diperlukan untuk itu untuk bekerja.systemctl
tidak tersedia untuk ubuntu 14.04, ia digunakanupstart
untuk membuka layanan.Pengaturan proxy APT Anda tidak terkait dengan Docker.
Docker menggunakan variabel lingkungan HTTP_PROXY, jika ada. Sebagai contoh:
Tetapi sebagai gantinya, saya sarankan Anda melihat
/etc/default/docker
file konfigurasi Anda: Anda harus memiliki baris ke tanda komentar (dan mungkin menyesuaikan) untuk menerapkan pengaturan proxy Anda secara otomatis. Kemudian restart server Docker:sumber
Pada CentOS file konfigurasi untuk Docker ada di:
Menambahkan baris di bawah ini membantu saya membuat daemon Docker bekerja di belakang server proxy:
sumber
export
. Apakah Anda yakin ini benar?export
hanya bekerja pada CentOS6 dan tanpa kerja pada CentOS7export HTTP_PROXY=...
adalah Bashism, untuk cangkang non-Bash (seperti apa / bin / sh), gunakan dua barisHTTP_PROXY=...
dan kemudianexport HTTP_PROXY
dikatakan, saya tidak membutuhkannyaexport
sama sekali.Jika Anda menggunakan Docker baru untuk Mac (atau Docker untuk Windows ), cukup klik kanan ikon Docker tray dan pilih Preferences (Windows: Settings), lalu pergi ke Advanced, dan di bawah Proxies tentukan pengaturan proxy Anda di sana. Klik Apply dan Restart dan tunggu sampai Docker restart.
sumber
Di Ubuntu Anda perlu mengatur http_proxy untuk daemon Docker, bukan proses klien. Ini dilakukan di
/etc/default/docker
(lihat di sini ).sumber
Untuk memperluas jawaban Arun , agar ini berfungsi di CentOS 7, saya harus menghapus perintah "ekspor". Jadi edit
Dan tambahkan:
Kemudian restart Docker:
The sumber posting blog ini .
sumber
Mengapa proxy yang terikat secara lokal tidak berfungsi
Masalah
Jika Anda menjalankan proxy yang terikat secara lokal , mis. Mendengarkan
127.0.0.1:8989
, itu TIDAK AKAN BEKERJA di Docker untuk Mac . Dari dokumentasi Docker :Mirip dengan sisi server Docker. (Untuk memahami sisi server dan sisi klien Docker, coba jalankan
docker version
.) Dan sisi server berjalan pada lapisan virtualisasi yang memiliki lapisannya sendirilocalhost
. Oleh karena itu, itu tidak akan terhubung ke server proxy padalocalhost
OS host.Solusinya
Jadi, jika Anda menggunakan proxy yang terikat secara lokal seperti saya, pada dasarnya Anda harus melakukan hal-hal berikut untuk membuatnya bekerja dengan Docker untuk Mac:
Buat server proxy Anda mendengarkan
0.0.0.0
alih-alih127.0.0.1
. Perhatian: Anda akan memerlukan konfigurasi firewall yang tepat untuk mencegah akses berbahaya ke sana.Tambahkan alias loopback ke
lo0
antarmuka, misalnya10.200.10.1/24
:Tetapkan HTTP dan / atau HTTPS proxy ke
10.200.10.1:8989
dari Preferensi dalam menu baki Docker (asumsikan bahwa server proxy mendengarkan pada port8989
).Setelah itu, uji pengaturan proxy dengan menjalankan perintah dalam wadah baru dari gambar yang tidak diunduh:
Perhatikan: alias loopback yang ditetapkan oleh
ifconfig
tidak disimpan setelah reboot. Untuk membuatnya gigih adalah topik lain. Silakan periksa posting blog ini dalam bahasa Jepang (Google Translate dapat membantu).sumber
Ini adalah perbaikan yang bekerja untuk saya: Ubuntu, versi Docker: 1.6.2
Dalam file
/etc/default/docker
, tambahkan baris:Mulai ulang Docker
sumber
Untuk mengkonfigurasi Docker agar berfungsi dengan proxy, Anda perlu menambahkan variabel lingkungan HTTPS_PROXY / HTTP_PROXY ke file sysconfig Docker (
/etc/sysconfig/docker
).Bergantung pada jika Anda menggunakan
init.d
atau alat layanan Anda perlu menambahkan pernyataan "ekspor" (karena log laporan Debian Bug - # 767441. Contoh di / etc / default / docker menyesatkan mengenai sintaks yang didukung ):Repositori Docker (Docker Hub) hanya mendukung HTTPS. Untuk membuat Docker bekerja dengan proxy pencegat SSL, Anda harus menambahkan sertifikat akar proksi ke toko trust sistem.
Untuk CentOS, salin file ke
/etc/pki/ca-trust/source/anchors/
dan perbarui toko trust CA dan restart layanan Docker.Jika proksi Anda menggunakan otentikasi NTLMv2 - Anda perlu menggunakan proxy perantara seperti Cntlm untuk menjembatani otentikasi. Posting blog ini menjelaskannya secara rinci .
sumber
Dalam versi baru Docker, mesin docker , dalam distribusi berbasis systemd , Anda harus menambahkan baris variabel lingkungan ke /lib/systemd/system/docker.service , seperti yang disebutkan oleh orang lain:
sumber
Setelah menginstal Docker, lakukan hal berikut:
Kemudian, Anda dapat menarik atau melakukan apa saja:
sumber
Karena saya belum diperbolehkan berkomentar:
Untuk CentOS 7 saya perlu mengaktifkan EnvironmentFile dalam "docker.service" seperti yang dijelaskan di sini: Kontrol dan konfigurasikan Docker dengan systemd .
Sunting: Saya menambahkan solusi saya sebagaimana dinyatakan oleh Nilesh. Saya perlu membuka "/etc/systemd/system/docker.service" dan saya harus menambahkan di dalam bagian
Baru kemudian file "etc / sysconfig / docker" dimuat di sistem saya.
sumber
Untuk mengatasi masalah dengan curl di Docker build, saya menambahkan yang berikut di dalam Dockerfile:
Perhatikan bahwa pernyataan ENV adalah SEBELUM pernyataan RUN.
Dan untuk membuat daemon Docker dapat mengakses Internet (saya menggunakan Kitematic dengan boot2docker), saya menambahkan yang berikut ke dalam
/var/lib/boot2docker/profile
:Lalu saya restart Docker dengan
sudo /etc/init.d/docker restart
.sumber
Jika menggunakan proxy socks5, ini adalah pengujian saya dengan Docker 17.03.1-ce dengan pengaturan "all_proxy", dan itu berhasil:
sumber
Solusi lengkap untuk Windows, untuk mengonfigurasi pengaturan proxy.
Anda dapat mengkonfigurasinya secara langsung dengan mengklik kanan pengaturan, pada ikon Docker, dan kemudian Proxies.
Di sana Anda dapat mengkonfigurasi alamat proxy, port, nama pengguna, dan kata sandi.
Dalam format ini:
Contoh:
Tidak lebih dari ini.
sumber
Pengaturan variabel lingkungan proxy tidak membantu saya dalam versi 1.0.1 ... Saya harus memperbarui
/etc/default/docker.io
file dengan nilai yang benar untuk variabel "http_proxy".sumber
Jika Anda berada di Ubuntu, jalankan perintah ini untuk menambahkan proxy Anda.
Dan batalkan komentar pada garis yang menentukan
Dan ganti dengan server proxy dan nama pengguna yang sesuai.
Kemudian restart Docker menggunakan:
Sekarang Anda dapat menjalankan perintah Docker di belakang proxy:
sumber
Mungkin Anda perlu mengatur variabel huruf kecil. Dalam kasus saya, file /etc/systemd/system/docker.service.d/http-proxy.conf saya terlihat seperti ini:
Semoga berhasil! :)
sumber
Saya juga menghadapi masalah yang sama di balik firewall. Ikuti langkah-langkah di bawah ini:
Jangan gunakan atau hapus file https_prxoy.conf.
Muat ulang dan mulai ulang wadah Docker Anda:
sumber
Jika Anda menggunakan Ubuntu, Anda harus menjalankan perintah ini:
Dan muat ulang Docker dengan:
Atau buka
/etc/docker.io
dengan nano ...sumber
Pada Ubuntu 14.04 (Trusty Tahr) dengan Docker 1.9.1, saya hanya menghapus komentar
http_proxy
baris tersebut, memperbarui nilai dan kemudian memulai kembali layanan Docker.lalu
sumber
Di RHEL6.6 hanya ini yang berfungsi (perhatikan penggunaan
export
):/ etc / sysconfig / docker
CATATAN: Keduanya dapat menggunakan
http
protokol.)Terima kasih kepada https://crondev.com/running-docker-behind-proxy/
sumber
Di jaringan saya, Ubuntu bekerja di belakang server proxy ISA perusahaan. Dan itu membutuhkan otentikasi. Saya mencoba semua solusi yang disebutkan di atas dan tidak ada yang membantu. Apa yang benar-benar membantu adalah menulis baris proxy dalam file
/etc/systemd/system/docker.service.d/https-proxy.conf
tanpa nama domain.Dari pada
atau
dan beberapa pengganti lain seperti
@ -> %40
atau\ -> \\
saya coba gunakanDan itu berfungsi sekarang.
sumber
Coba ini:
sumber
Ini tidak persis menjawab pertanyaan, tetapi mungkin membantu, terutama jika Anda tidak ingin berurusan dengan file layanan.
Jika Anda adalah orang yang meng-hosting gambar, salah satu caranya adalah mengubah gambar sebagai arsip tar, menggunakan sesuatu seperti yang berikut di server .
Cukup unduh arsip dan ubah kembali menjadi gambar.
sumber