Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Penguasaan teknologi teras Docker yang paling sistematik (perkongsian ringkasan)

Penguasaan teknologi teras Docker yang paling sistematik (perkongsian ringkasan)

WBOY
WBOYke hadapan
2022-02-04 07:00:312327semak imbas

Artikel ini membawakan anda beberapa soalan berkaitan tentang pengendalian kontena teknologi teras docker, penjelasan terperinci tentang Dockerfile, dll. Saya harap ia akan membantu anda.

Penguasaan teknologi teras Docker yang paling sistematik (perkongsian ringkasan)

1. Docker

1 Pengenalan

  • Teknologi Cgroup, Namespace dan Union FS berdasarkan kernel Linux, Proses pengekapan dan pengasingan ialah teknologi maya di peringkat sistem pengendalian Memandangkan proses terpencil adalah bebas daripada hos dan proses terpencil yang lain, ia dipanggil bekas
  • Pelaksanaan awal adalah berdasarkan LXC dialih keluar dari 0.7 dan seterusnya, gunakan Libcontainer yang dibangunkan sendiri Bermula dari 1.11, ia telah berkembang lagi untuk menggunakan runC dan Containerd
  • Docker telah merangkumkannya lagi berdasarkan bekas, dari sistem fail, rangkaian. sambungan kepada proses pengasingan, dsb. , yang sangat memudahkan penciptaan dan penyelenggaraan bekas, menjadikan teknologi Docker lebih ringan dan lebih pantas daripada teknologi mesin maya

2. Kelebihan Docker

  • Sumber Sistem digunakan dengan lebih cekap
  • Masa permulaan yang lebih pantas
  • Persekitaran operasi yang konsisten
  • Penghantaran dan penggunaan berterusan
  • Penghijrahan yang lebih mudah
  • Lebih mudah diselenggara dan kembangkan

3 Perbandingan antara Docker dan mesin maya

2

Rujuk artikel untuk pemasangan: Pasang Enjin Docker pada Ubuntu |. >

3 Operasi kontena

Mula:

larian docker:                                                                                                                                                                                                                                                                                                                                                                                                                                                          >

  • Mulakan bekas yang ditamatkan

permulaan buruh pelabuhan

Hentikan bekas

  • berhenti berlabuh

Lihat proses kontena

  • docker ps

Lihat butiran kontena

  • periksa docker

Salin fail ke bekas

  • docker cp file1 :/file_to_path

docker keluar dari bekas tanpa menutup bekas: ctrl q p

  • docker keluar dari bekas dan menutup bekas: exit

Soal semua imej docker

  • imej docker

  • Gudang imej Docker

  • Hab Docker: https://hub.docker.comBuat gudang imej peribadi: docker run -d -p 5000:5000 registry

  • 4. Fail Docker Penjelasan terperinci

Fail Docker biasanya dibahagikan kepada empat bahagian: maklumat imej asas, maklumat penyelenggaraan, arahan operasi imej dan arahan operasi permulaan kontena

Arahan biasa
  • DARI: Tentukan imej asas, yang mesti menjadi arahan pertama

Format:

DARI

DARI :

DARI ubuntu

PENYELENGGARA: Maklumat penyelenggaraan

Format: MAINTAINER

Contoh reben MAINTAINER

RUN: Perintah dilaksanakan semasa membina imej

Format:

Pelaksanaan Shell: RUN

Perlaksanaan: RUN ["executable", "param1", "param2"]

Contoh:

RUN apk update

RUN ["/etc/execfile" , "arg1", "arg2"]

RUN apt-get update && apt Kedua-dua arahan -get install sentiasa disambungkan dengan &&, jika tidak lapisan binaan kemas kini apt-get akan dicache, yang akan menyebabkan pakej baharu gagal dipasang

TAMBAH: Tambahkan fail setempat pada bekas, tar dan jenis lain

akan dinyahmampat secara automatik dan boleh mengakses sumber rangkaian, serupa dengan wget format:

ADD ... Contoh:

ADD bin/amd64/httpserver /httpserver

COPY: Fungsi ini serupa dengan ADD, tetapi ia tidak akan menyahmampat fail dan tidak boleh mengakses sumber rangkaian

Gunakan berbilang peringkat dalam Dockerfile: berbilang peringkat dalam Dockerfile (berbilang peringkat build) - sparkdev - Blog Park

Format: COPY ...

Contoh:

COPYbin/amd64/ httpserver /httpserver

CMD: Dipanggil selepas bekas dibina, iaitu ia dipanggil hanya apabila bekas bermula

Format:

CMD ["boleh laku","param1","param2"] (fail boleh laku boleh laku, keutamaan) CMD ["param1","param2"] ( Jika ENTRYPOINT ditetapkan, hubungi terus ENTRYPOINT untuk menambah parameter) CMD perintah param1 param2 (laksanakan arahan dalaman shell)

Contoh:

CMD ["ethtool", "--help"]

CMD echo "1111"

ENTRTPOINT: Konfigurasikan bekas untuk menjadikannya boleh laku

.

Format:

ENTRYPOINT ["executable", "param1", "param2"] (executable file, priority) ENTRYPOINT command param1 param2 (shell internal command)

Contoh:

ENTRYPOINT /httpserver


CMD [-c]

LABAL: Digunakan untuk menambah data sumber pada imej

Format:

LABEL = == 🎜> LABEL multi.label1="value1" multi.label2="value2" other="value3"

ENV: Tetapkan pembolehubah persekitaran

Format:

ENV

Contoh:

Port

Format:

DEDAH < port> [...]

Contoh:

EXPOSE 80

EXPOSE 80/tcp EXPOSE 80 90

VOLUME: digunakan untuk menentukan direktori kegigihan

Format:

VOLUME []

Contoh:

JILID ["/data", "/usr1/jenkins"]

PENGGUNA: Tentukan run Nama pengguna atau UID bekas, dan RUN berikutnya juga akan menggunakan pengguna yang ditentukan.

Format:

PENGGUNA pengguna

PENGGUNA pengguna:kumpulan

PENGGUNA uid

PENGGUNA uid:gid

PENGGUNA pengguna:gid

PENGGUNA uid:kumpulan

Contoh: PENGGUNA www

ARG: Digunakan untuk menentukan pembolehubah yang dihantar ke masa jalan binaan


Format:
ARG < ;[=]
Contoh:
ARG build_user=ribbon


5. Penjelasan terperinci mengenai Linux NameSpace

  • Penjelasan terperinci tentang NamesSpace:

Linux NameSpace_Frank_Abagnale's Blog-CSDN Blog Artikel ini menyediakan lebih banyak lagi pengenalan terperinci, Anda boleh merujuk artikel ini

  • Operasi biasa NameSpace

  • Lihat ruang nama sistem semasa:

lsns -t

  • Lihat ruang nama proses:

ls -la /proc//ns/

  • Lihat arahan berjalan ruang nama

nsenter -t -n

6

Penjelasan terperinci Cgroups
  • Teras Kontena: cgroups - Buku Ringkas Anda boleh merujuk artikel ini untuk mengetahui lebih lanjut

Simulasikan Cgroups untuk kawal sumber CPU
  • Pass Simulate untuk membiasakan diri dengan lebih baik dengan kesan Cgroups mengawal sumber mula-mula buat folder cpudemo

dan. laksanakan atas. Anda dapat melihat bahawa busyloop menggunakan dua sumber CPU

Tambahkan proses pada kumpulan konfigurasi proses cgroup

Tetapkan cpuquota

Anda boleh lihat kejayaan akan menduduki 200% Sumber CPU dikurangkan kepada 1%

Simulasi Cgroup yang melebihi had sumber memori dan dibunuh oleh OOM
  • / Cipta folder memorydemo dalam direktori sys/fs/cgroup/memory

Jalankan program yang menggunakan memori dan gunakan jam tangan untuk menanyakan penggunaan memori

Konfigurasikan proses ke dalam konfigurasi cgroups kumpulan

Tetapkan saiz memori maksimum

Tunggu program Killed by OOM, dmesg boleh lihat maklumat bunuh

Nota: Untuk memadamkan folder cgroup yang dibuat sendiri, anda perlu menggunakan cgroup-tools

7. Union FS

Teknologi yang digunakan oleh Docker semuanya berasal daripada teknologi Linux dan Tiada inovasi, dan inovasi Docker ialah sistem fail.

1 🎜>

Pelapisan sistem fail, direktori dengan kebenaran baca sahaja boleh diubah suai secara logik Pengubahsuaian di sini adalah tambahan dan tidak menjejaskan bahagian baca sahaja

    Kegunaan Union FS yang biasa: Berbilang cakera dipasang pada direktori yang sama. , dan satu lagi adalah untuk menggabungkan bahagian baca sahaja dan direktori boleh tulis
  • 2 Ilustrasi Union FS
  • Dalam reka bentuk imej Docker, Konsep lapisan diperkenalkan, maksudnya, setiap langkah operasi pengguna untuk mencipta imej akan menghasilkan lapisan, iaitu, rootfs tambahan (direktori), supaya bekas di mana aplikasi A dan aplikasi B terletak secara bersama merujuk sama Operasi ubuntu lapisan sistem dan lapisan persekitaran Golang (sebagai lapisan baca sahaja) masing-masing mempunyai lapisan aplikasi dan lapisan boleh tulis sendiri. Apabila memulakan bekas, lekapkan lapisan yang berkaitan ke direktori melalui UnionFS sebagai sistem fail akar bekas.

3. Pemacu storan kontena

4 kesan

Memandangkan versi semasa docker menggunakan pemacu storan overlayFS, kami menggunakan kaedah pemasangan tindanan

untuk menjalankan eksperimen melalui tiga direktori: Direktori bawah. direktori atas, dan direktori kerja dilaksanakan. Mungkin terdapat beberapa direktori yang lebih rendah Direktori kerja ialah direktori kerja asas pemasangan selesai Pandangan bersatu yang dibentangkan kepada pengguna dipanggil direktori gabungan.


Laksanakan arahan berikut:

Anda boleh melihat bahawa fail pemacu storan tindanan dipasang mencapai kesan. Selepas percubaan selesai, untuk memulihkan persekitaran, anda perlu umount direktori yang digabungkan terlebih dahulu, dan kemudian padamkan empat direktori Jika anda memadam yang lain dahulu, rm: tidak boleh mengalih keluar 'digabungkan/': Peranti atau sumber sibuk mungkin muncul. mengakibatkan direktori yang digabungkan tidak dipadamkan.

mkdir upper lower merged work
echo "lower" > lower/in_lower.txt
echo "from lower" > lower/in_both.txt
echo "from upper" > upper/in_both.txt
echo "upper" > upper/in_upper.txt
path=$(pwd)
mount -t overlay overlay -o lowerdir=${path}/lower,upperdir=${path}/upper,workdir=${path}/work ${path}/merged
8. Rangkaian Docker

1. Alat pemasangan

Sistem Centos:

$ yum install bridge-utils

Sistem Ubuntu:

$ apt-get install bridge-utils

2 mod rangkaian Docker

Tanya terbina- dalam mod Network docker

  • docker run memilih mod rangkaian untuk dijalankan

1) Mod hos: Tentukan menggunakan --net=host. Kongsi satu set jaringan dengan hos

2) mod tiada: gunakan --net =tiada dinyatakan. Konfigurasi rangkaian perlu dikonfigurasikan sendiri

3) Mod jambatan: Gunakan --net=bridge untuk menentukan, tetapan lalai .

rajah logik rangkaian docker, jambatan dan NAT

4) Mod bekas: Gunakan --net=container:NAME_or_ID untuk menentukan. Menggunakan konfigurasi rangkaian bekas lain

Gambar rajah mod rangkaian adalah secara kasar seperti yang ditunjukkan di bawah

3 Simulasikan operasi Docker untuk memulakan jambatan rangkaian

  • Buat --net=none nginx

  • Cipta ruang nama rangkaian

  • Cipta pautan ruang nama rangkaian

  • Semak peranti jambatan yang sedang dibuat

  • Buat pasangan veth

  • untuk Konfigurasi rangkaian

  • Konfigurasikan rangkaian B

Jana peranti rangkaian eth0 dalam nginx docker Konfigurasikan ip gateway untuk eth0 dalam

  • nginx boleh mengakses

  • Konfigurasikan nat supaya tingkap juga boleh mengakses melalui ip

  • Padamkan peraturan nat yang ditentukan selepas penggunaan

Pembelajaran yang disyorkan: "tutorial video buruh pelabuhan"

Atas ialah kandungan terperinci Penguasaan teknologi teras Docker yang paling sistematik (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam