Di bawah gelombang pengkomputeran awan dan kontena semasa, Docker telah muncul sebagai teknologi kontena aplikasi arus perdana dan telah menjadi salah satu alat yang paling banyak digunakan dalam bidang operasi, penyelenggaraan dan pembangunan. Dalam konteks ini, pemasangan luar talian Docker juga telah menjadi keperluan yang sangat biasa Kerana ramai pengguna tidak dapat menyambung ke Internet, atau sambungan Internet dilarang kerana faktor keselamatan dan lain-lain, pemasangan luar talian telah menjadi salah satu kaedah pemasangan yang paling mudah. Walau bagaimanapun, semasa pemasangan luar talian Docker, pemasangan selalunya berjaya tetapi permulaannya gagal, yang merupakan masalah yang sangat menyusahkan untuk pemula.
Artikel ini akan bermula daripada operasi sebenar, memperkenalkan kaedah pemasangan luar talian Docker dan menjalankan analisis terperinci tentang kegagalan permulaan untuk memberikan anda panduan terperinci.
1. Pemasangan luar talian Docker
Terdapat dua cara untuk memasang Docker di luar talian: satu ialah memasang dengan memuat turun fail binari Docker dan satu lagi ialah memasang dengan mengkonfigurasi sumber yum. Yang pertama adalah sesuai terutamanya untuk pelayan tanpa keadaan rangkaian, manakala yang kedua sesuai untuk pemasangan luar talian persekitaran pembangunan Linux.
1. Pasang dengan memuat turun fail binari Docker
Prinsip kaedah ini agak mudah, iaitu memuat turun fail binari Docker ke tempatan dan kemudian memasangnya. Langkah-langkah khusus adalah seperti berikut:
1.1 Dapatkan fail binari Docker
Muat turun versi fail binari Docker yang sepadan daripada tapak web rasmi https://www.docker.com/. Semasa memuat turun, anda perlu mengetahui maklumat tentang sistem pengendalian semasa Untuk sistem centos, anda boleh memilih untuk memuat turun fail binari yang sepadan dengan alamat berikut.
https://download.docker.com/linux/static/stable/x86_64/ docker-version number.tgz
1.2 Pasang fail binari Docker
Semasa pemasangan Anda perlu unzip fail binari yang dimuat turun dan alihkan fail docker dan dockerd ke direktori /usr/bin.
tar -xvf docker-version number.tgz
cp docker/* /usr/bin
2 Pasang dengan mengkonfigurasi sumber yum
di bawah sistem centos , anda boleh memasang Docker di luar talian dengan mengkonfigurasi sumber yum. Langkah-langkah khusus adalah seperti berikut:
2.1 Dapatkan sumber yum Docker
Muat turun versi sepadan pakej pemasangan Docker dari tapak web rasmi https://www.docker.com/. Semasa memuat turun, anda perlu mengetahui maklumat tentang sistem pengendalian semasa dan memuat turun pakej rpm yang sepadan dengan versi sistem.
2.2 Cipta sumber yum tempatan
Buat direktori sumber yum tempatan, salin pakej pemasangan Docker yang dimuat turun ke direktori ini dan cipta direktori melalui arahan createrepo
mkdir /var/docker
cp docker-ce*.rpm /var/docker
createrepo /var/docker
2.3 Konfigurasikan sumber yum
dalam /etc/yum Cipta yang baharu fail repo dalam direktori .repos.d dan tulis kandungan berikut
[docker-local]
name=Docker Local repo
baseurl=file:///var/docker
enabled =1
gpgcheck=0
2.4 Pasang Docker
Laksanakan arahan berikut untuk memasang Docker
yum install docker-ce
2 , Solution kepada kegagalan permulaan
1. Penerangan masalah
Selepas melengkapkan pemasangan luar talian Docker di atas, anda mungkin menghadapi situasi di mana Docker gagal dimulakan dan ralat berikut berlaku:
$ sudo systemctl start docker
Kerja untuk docker.service gagal kerana proses kawalan keluar dengan kod ralat.
Lihat "systemctl status docker.service" dan "journalctl -xe" untuk mendapatkan butiran.
Melaksanakan arahan systemctl status docker.service menunjukkan bahawa sebab kegagalan permulaan ialah perintah "ExecStart" dalam fail docker.service tidak dapat dilaksanakan dengan jayanya:
$ sudo systemctl status docker.service
. ..
30 Apr 07:40:32 localhost.localdomain systemd[1]: Memulakan Enjin Kontena Aplikasi Docker.
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service: proses utama keluar, code=exited , status=1/FAILURE
Apr 30 07:40:32 localhost.localdomain systemd[1]: Unit docker.service memasuki keadaan gagal.
Apr 30 07:40:32 localhost.localdomain systemd[1]: docker.service gagal.
30 Apr 07:40:32 localhost.localdomain systemd[1]: masa penangguhan docker.service tamat, penjadualan dimulakan semula.
Apr 30 07:40:32 localhost. localdomain systemd[1] : Enjin Kontena Aplikasi Docker Dihentikan.
$sudo journalctl -xe
dockerd-current[14552]: time="2020-04-30T07:40:32.652790118+08:00" level=error msg= "pemberitahu sistem gagal: Tidak dapat memuatkan modul systemd "libsystemd.so": tidak boleh membuka kongsi o
dockerd-current[14552]: gagal memulakan daemon: Ralat memulakan pengawal rangkaian: senarai alamat jambatan gagal: Senarai PredefinedLocalScopeDefaultNetworks gagal: Pratakrif
dockerd-current[14552]: Ralat semasa memulakan daemon: Ralat memulakan pengawal rangkaian: senarai alamat jambatan gagal: PredefinedLocalScopeDefaultNetworks Senarai gagal: Pratakrif
proses exid.[1]:proses utama sistem. code=exited, status =1/FAILURE
systemd[1]: Gagal memulakan Enjin Kontena Aplikasi Docker.
systemd[1]: Unit docker.service memasuki keadaan gagal.
systemd[1]: docker .servis gagal.
2
Melalui mesej ralat di atas, anda boleh mendapati bahawa sebab mengapa Docker gagal dimulakan adalah kerana pengawal rangkaian Docker tidak boleh dimulakan. Khususnya, ini adalah kerana pengawal rangkaian Docker menguruskan rangkaian kontena melalui tembok api iptables, dan tembok api melarang semua trafik bukan tempatan secara lalai. Untuk Docker, peraturan yang berkaitan akan ditambahkan secara automatik pada iptables apabila ia dimulakan buat kali pertama Namun, jika Docker dipasang di luar talian dimulakan buat kali pertama, penambahan peraturan akan gagal, menyebabkan pengawal rangkaian gagal dimulakan. Manifestasi khusus ialah apabila pengguna memulakan Docker, Docker akan secara automatik mencipta jambatan bernama docker0 berdasarkan alamat IP tempatan Jika operasi ini gagal, Docker tidak akan dapat dimulakan.
3. Penyelesaian Masalah
Terdapat dua cara utama untuk menyelesaikan masalah ini:
3.1 Buat jambatan docker0
Mencipta jambatan docker0 boleh menyelesaikan masalah secara manual Untuk masalah ini, di bawah centos, anda boleh melaksanakan arahan berikut untuk mencipta jambatan docker0 secara manual:
pautan ip sudo tambah nama jambatan jenis docker0
sudo ip addr add dev docker0 172.17.0.1/16
pautan sudo ip set dev docker0 up
Selepas melengkapkan operasi di atas, mulakan Docker sekali lagi dan laksanakan arahan berikut sebagai pentadbir:
$ sudo systemctl start docker
ke Docker permulaan yang lengkap.
3.2 Ubah suai peraturan firewall
Mematikan firewall atau mengubah suai peraturan firewall juga merupakan cara yang berkesan untuk menyelesaikan masalah ini. Apabila mematikan firewall, anda boleh menggunakan arahan berikut:
$ systemctl stop firewalld
$ systemctl disable firewalld
Tetapi keadaan ini tidak disyorkan untuk mengekalkan sistem firewall sebanyak mungkin mengikut keperluan keselamatan.
Jika anda ingin mengubah suai peraturan iptables, anda boleh menambah peraturan melalui arahan berikut:
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -I FORWARD -j ACCEPT
$ sudo service iptables save
Selepas melaksanakan operasi di atas, mulakan Docker sekali lagi dan ia akan bermula seperti biasa.
3. Ringkasan
Melalui pengenalan artikel ini, kita dapat melihat bahawa apabila memasang Docker di luar talian, Docker mungkin tidak bermula kerana masalah rangkaian. Pada masa ini, kita perlu memahami prinsip kerja pengawal rangkaian Docker dan mengkonfigurasinya secara manual atau membuat pengubahsuaian tertentu pada firewall iptables untuk akhirnya menyelesaikan masalah kegagalan permulaan Docker. Sudah tentu, kita juga boleh menyelesaikan masalah sedemikian dengan menyemak mesej ralat tertentu dalam masa dan menjalankan analisis.
Oleh itu, semasa pemasangan luar talian dan permulaan Docker, kita perlu sentiasa berhati-hati dan bersabar, terus mencuba dan nyahpepijat, dan akhirnya mencari kaedah yang sesuai untuk menyelesaikan masalah tersebut.
Atas ialah kandungan terperinci Pemasangan luar talian docker gagal dimulakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!