‫Persyaratan untuk bagian ini termasuk memahami cara memulai wadah. Kemudian konsep dasar jaringan TCP
‫/ IP, seperti subnet dan IP serta port dan firewall.
‫Anda tidak harus mengetahui semua itu, tetapi pasti akan membuatnya jauh lebih mudah
‫bagi Anda untuk memahami bagian ini yang berfokus
‫pada hal-hal konseptual, sebelum kita benar-benar masuk ke banyak hal baris perintah di kuliah berikutnya.
‫Saya hanya ingin mengingatkan Anda tentang opsi -p pada perintah kontainer Anda menjalankan yang
‫memperlihatkan port pada mesin Anda.
‫Sebenarnya ada banyak hal yang terjadi di latar belakang jaringan Docker yang akan kita bicarakan.
‫Docker memiliki konsep baterai termasuk tetapi dapat dilepas yang pada dasarnya berarti bahwa standarnya cukup mudah
‫dan umum untuk digunakan, tetapi Anda dapat mengubah banyak opsi di bawah tenda.
‫Kami akan segera memeriksa dalam kuliah ini perintah port container yang memberi Anda output
‫cepat port apa yang terbuka untuk container itu di jaringan Anda.
‫Kemudian kita akan memecah beberapa konsep jaringan Docker dan jaringan virtual dan bagaimana
‫paket mengalir di sekitar jaringan.
‫Dan kita akan selesai dengan diagram jaringan yang menunjukkan bagaimana kontainer saling berbicara dan
‫bagaimana itu berbeda dari -p mengekspos mereka ke jaringan fisik.
‫Ketika Anda benar-benar memulai sebuah wadah, Anda benar-benar berada di latar belakang yang terhubung
‫ke jaringan Docker tertentu. Secara default, itu adalah jaringan jembatan, seperti yang akan kita periksa sebentar lagi. Kemudian masing-masing jaringan yang
‫akan Anda sambungkan benar-benar keluar melalui firewall NAT, yang sebenarnya adalah daemon Docker yang
‫mengonfigurasi alamat IP host pada antarmuka default sehingga wadah Anda dapat keluar ke
‫Internet atau ke seluruh komputer Anda. jaringan dan kemudian kembali.
‫Tapi kita sebenarnya tidak perlu menggunakan -p ketika kita memiliki wadah khusus yang ingin berbicara
‫satu sama lain di dalam host kita.
‫Misalnya, jika Anda memiliki aplikasi yang memiliki server sekuel dan wadah PHP Apache, kedua kontainer tersebut harus berada di
‫jaringan yang sama dan mereka dapat berbicara satu sama lain tanpa benar-benar membuka porta mereka
‫hingga ke sisa jaringan fisik Anda .
‫Jika Anda memiliki aplikasi lain yang tidak terkait, katakanlah itu menggunakan Mongo dan Node. js, Anda dapat membuat jaringan untuk itu
‫sehingga mereka dapat berbicara satu sama lain tanpa menggunakan -p untuk
‫mengekspos mereka ke jaringan. Tetapi mereka tidak dapat benar-benar berbicara dengan jaringan lain di
‫mana Anda mungkin menjalankan aplikasi yang tidak terkait.
‫Tetapi masalahnya adalah bahwa hampir semua pengaturan yang saya jelaskan sebenarnya dapat diubah.
‫Dan ini memunculkan pepatah bagus bahwa Docker suka menggunakan ... termasuk baterai tetapi bisa dilepas.
‫Anda akan melihat bahwa di sepanjang kursus ini bahwa sering kali ada default yang hanya bekerja di
‫luar kotak.
‫Anda bahkan tidak perlu menentukannya. Anda hanya memperhatikan bahwa berbagai hal dikonfigurasikan dengan
‫cara standar.
‫Tetapi banyak dari opsi-opsi ini dapat dikonfigurasi baik pada saat runtime atau bahkan dapat diubah setelah fakta. Dan kita akan melihat beberapa hal itu terjadi
‫di sini ketika kita bermain-main dengan jaringan.
‫Beberapa hal yang benar-benar dapat Anda ubah adalah membuat beberapa jaringan virtual, mungkin
‫satu per aplikasi, atau yang berbeda berdasarkan persyaratan keamanan yang berbeda.
‫Anda sebenarnya bisa, sama seperti di dunia fisik, memiliki dua NIC fisik pada komputer sungguhan. Anda sebenarnya dapat memiliki dua jaringan
‫virtual yang terhubung ke satu wadah, atau Anda benar-benar dapat membuat wadah tersebut
‫berbicara tanpa jaringan.
‫Anda dapat melewati konfigurasi jaringan virtual yang keluar dari kotak dan benar-benar menggunakan
‫-
‫net = host, dan Anda akan kehilangan beberapa manfaat kontainerisasi.
‫Tetapi dalam beberapa kasus mungkin diperlukan.
‫Kemudian, kita benar-benar akan masuk ke driver jaringan Docker. Ada seluruh ekosistem plugin
‫di sekitar Docker yang memperluas kemampuan Docker ke banyak alat pihak ketiga.
‫Tetapi dalam kasus ini kita akan melihat beberapa driver jaringan Docker yang berbeda dan bagaimana
‫mereka mungkin mengubah jaringan kita dan memberi kita kemampuan baru.
‫Ini benar-benar hanya menggaruk permukaan.
‫Sebenarnya ada konsep jaringan sepanjang kursus ini di mana kita akan berbicara
‫tentang topik yang lebih canggih dari jaringan pribadi multi-host dan konsep-konsep seperti sub antarmuka dan sebagainya.
‫Tapi untuk sekarang, mari selami beberapa hal baris perintah.
‫Sebagai ulasan
‫singkat, mari kita lihat -p dari perintah menjalankan kontainer kami ... buruh pelabuhan menjalankan kontainer.
‫Jika Anda ingat ketika kami pertama kali menjalankan sebuah wadah, kami menggunakan -p untuk mengekspos port 80 dari Nginx kami.
‫Itu mengambil sisi kiri, yang merupakan port host, dan meneruskan lalu lintas dari port itu ke port
‫80 kontainer.
‫Jika kami melakukan hosting docker container pelabuhan, sebenarnya menunjukkan ini dalam format yang bagus, port mana yang meneruskan lalu
‫lintas ke kontainer itu dari host ke dalam container itu sendiri.
‫Kami belum berbicara tentang alamat IP wadah.
‫Jadi, Anda mungkin berasumsi bahwa kontainer menggunakan IP yang sama dengan host. Tetapi secara default, itu tidak
‫benar.
‫Kita dapat dengan mudah mendapatkan Docker IP dari wadah itu dengan memeriksanya dan kita akan
‫menggunakan perintah format, atau opsi benar-benar, yang Anda akan perhatikan sebenarnya memiliki format yang cukup spesifik untuk cara
‫memfilter barang yang masuk.
‫Anda selalu dapat menggunakan perintah grep yang kami gunakan sebelumnya untuk memfilter output teks
‫Anda, tetapi format, --format, sebenarnya sedikit lebih bersih dan konsisten. Anda melakukan dua kurung keriting, dan kemudian setelah
‫kita terbiasa mengetahui format file konfigurasi, kita tahu bahwa NetworkSettings. Alamat IP adalah simpul aktual
‫dari output JSON yang ingin kita lihat.
‫Dan kemudian hosting. Ups itu artinya saya tidak mengeja dengan benar.
‫I P A d d.
‫Dan bukan itu yang saya harapkan.
‫Jika saya akan menggunakan IP host saya karena saya tahu Mac saya di jaringan lokal saya, dan jika saya melakukan
‫ifconfig di Mac saya, saya hanya tahu bahwa alamat IP ada di jaringan rumah saya atau 1 9 2 1 6 8 Subnet.
‫Sangat menarik bahwa mereka bukan jaringan yang sama.
‫Jadi mengapa demikian?
‫Mari kita lihat apakah akan lebih masuk akal jika saya menariknya keluar.
‫Jika sistem operasi host saya terhubung ke jaringan saya ... ini jaringan saya ... jaringan fisik. Maka ini adalah antarmuka
‫Ethernet pada mesin host saya, dalam kasus saya ini adalah Mac saya.
‫Ada sedikit firewall di sana yang melakukan beberapa hal. Ini memblokir semua lalu lintas masuk yang datang dari jaringan
‫sehingga semuanya diblokir secara default. Saya akan menyebutnya firewall. Lalu lintas apa
‫pun yang keluar dari kontainer saya akan dihapus secara default.
‫Ini bertindak seperti firewall tepi yang cukup umum di jaringan.
‫Tapi ada konsep jaringan virtual ini, dan secara default, Anda akan melihat
‫jaringan yang disebut bridge atau docker0.
‫Ketika Anda memulai sebuah wadah baru, kami akan menyebutnya C1, wadah itu melekat pada jaringan itu, jaringan virtual
‫itu, dan jaringan virtual itu secara otomatis dilampirkan ke antarmuka Ethernet Anda pada host Anda sehingga
‫bisa keluar.
‫Dalam kasus kami, ketika kami baru saja meluncurkan Nginx itu, kami memberikannya -p 80:80. Yang mengatakannya di sini untuk membuka port 80 pada
‫antarmuka Ethernet saya pada Mac saya dan meneruskan apa pun yang masuk ke port 80
‫melalui jaringan virtual ke port 80
‫dalam wadah itu.
‫Secara default, ketika saya membuat wadah kedua, itu diletakkan di jaringan jembatan yang sama.
‫Kedua kontainer itu dapat berbicara dengan bebas bolak-balik di port yang terbuka.
‫Kecuali saya tentukan -p, tidak ada lalu lintas yang masuk ke jaringan internal saya di sini akan sampai ke
‫kontainer saya.
‫Saya sebenarnya dapat membuat lebih banyak jaringan virtual dan memanggil mereka apa yang saya inginkan. Saya akan menyebut
‫ini aplikasi saya, katakanlah. Dan katakanlah saya menghubungkan dua kontainer di sini ... Saya mendapat MySQL.
‫Lalu saya mendapat Apache.
‫Di MySQL, saya tidak
‫membuka port apa pun, dan tidak pernah menentukan -p. Tetapi pada Apache,
‫saya memberikannya -p dari 8080: 80.
‫Itu berarti di sini di sebelah kanan, pada antarmuka Ethernet saya di host saya, itu akan mulai mendengarkan
‫pada port 8080.
‫Begitu lalu lintas masuk ke host saya di port 8080, itu akan merutekannya ke jaringan
‫virtual baru yang saya buat dan ke server Apache di port 80.
‫Di dalam jaringan virtual ini, server Apache bebas berbicara dengan server MySQL melalui
‫porta mendengarkannya.
‫Ketika Anda berpikir tentang jaringan virtual di Docker, dan di mana kontainer berada, pikirkan tentang bagaimana Anda akan menempatkan
‫kontainer yang berbeda di dekat satu sama lain karena mereka terkait dalam aplikasi mereka.
‫Seperti yang dapat Anda lihat, dua contoh ini, jika saya memiliki wadah satu dan wadah dua peringkat
‫atas sesuatu yang berbeda, Jika mereka tidak akan berbicara dengan layanan di jaringan ini di bawah, maka masuk akal
‫untuk tetap mereka di jaringan virtual yang terpisah.
‫Jika mereka harus berbicara satu sama lain, mereka harus pergi melalui port yang
‫diterbitkan sepanjang jalan keluar dan kembali.
‫Sebagai pengingat, pada antarmuka apa pun di host Anda, Anda tidak dapat mendengarkan lebih dari satu port untuk beberapa kontainer.
‫Jadi, Anda tidak dapat memiliki dua wadah mendengarkan pada port 80 di tingkat host.
‫Hanya satu yang bisa melakukan itu.
‫Jika Anda mencoba untuk memulai wadah lain, itu sebenarnya akan salah dan mengatakan bahwa
‫sudah ada sesuatu yang lain di port itu. Itu bukan batasan Docker; itu hanya batasan bagaimana jaringan
‫IP biasanya bekerja.
‫Rekap cepat saja di bagian ini. Kami sebenarnya menghabiskan banyak waktu pada konsep jaringan
‫Docker, termasuk mengekspos port pada host Anda ke jaringan fisik menggunakan -p. Gagasan Docker berfokus pada standar
‫waras di mana mereka menyebutnya baterai termasuk tetapi bisa dilepas.
‫Bagaimana dengan pengembang lokal dan pengujian, Anda mungkin bisa bertahan dengan standarnya, tetapi semuanya bisa berubah.
‫Kemudian kami belajar tentang perintah port container yang merupakan cara cepat untuk melihat port-port yang
‫terbuka untuk container khusus Anda.
‫Kemudian kami memecah paket-paket yang bergerak di sekitar jaringan virtual dan bagaimana mereka berhubungan dengan jaringan virtual
‫lainnya, dan bagaimana mereka masuk dan keluar dari mesin Docker Anda.
‫Jadi, ini semua adalah konsep yang sangat baik untuk dipahami ketika kita melompat ke hal-hal CLI yang sebenarnya dalam
‫kuliah berikutnya.