Dalam pembangunan perisian moden, Docker telah menjadi teknologi virtualisasi yang sangat popular, yang membolehkan pembangun membangun, menguji dan menggunakan dalam persekitaran yang berbeza. Ciri penting Docker ialah ia boleh dijalankan pada hos yang berbeza, jadi cara untuk melaksanakan komunikasi antara Dockers dalam persekitaran berbilang hos telah menjadi topik hangat.
Artikel ini akan memperkenalkan cara melaksanakan komunikasi antara hos Docker yang berbeza, termasuk:
1. Konsep dan ciri rangkaian Docker
Dalam Docker, rangkaian ialah subsistem bebas yang menyediakan keupayaan komunikasi untuk bekas yang berbeza. Ciri penting rangkaian Docker ialah mengasingkan bekas yang berbeza dalam rangkaian yang berbeza, dan komunikasi antara bekas mesti dicapai melalui rangkaian. Jenis rangkaian Docker biasa termasuk:
Dalam Docker, komunikasi antara bekas yang berbeza juga boleh dicapai melalui rangkaian tersuai.
2. Kaedah komunikasi bekas Docker yang berjalan pada hos yang sama
Komunikasi antara bekas Docker yang berjalan pada hos yang sama adalah yang paling mudah dicapai. Secara lalai, rangkaian jambatan Docker membenarkan komunikasi antara semua bekas melalui alamat IPnya. Oleh itu, komunikasi antara bekas berbeza pada hos yang sama hanya perlu dilakukan menggunakan alamat IP bekas.
Dalam Docker, anda boleh menggunakan arahan berikut untuk melihat alamat IP bekas yang sedang berjalan:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>
Kod sampel untuk komunikasi antara bekas Docker pada hos yang sama adalah seperti berikut:
import requests response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
3 Kaedah komunikasi bekas Docker yang dijalankan pada hos yang berbeza
Apabila bekas Docker yang berbeza dijalankan pada hos yang berbeza, mereka tidak boleh berkomunikasi melalui alamat IP bekas itu kerana ia tidak lagi dimiliki ke rangkaian yang sama. Oleh itu, cara lain mesti digunakan untuk berkomunikasi antara mereka.
Dalam Docker, komunikasi kontena pada hos yang berbeza boleh dicapai dalam dua cara berikut:
Kod sampel untuk menggunakan Pemetaan Port adalah seperti berikut:
import requests response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')
Apabila menggunakan rangkaian Tindanan untuk menyambungkan bekas pada hos yang berbeza, langkah berikut perlu dilakukan:
docker swarm init
; docker network create -d overlay <network_name>
docker service create --name <service_name> --network <network_name> <image_name>
. Kod contoh untuk berkomunikasi antara satu sama lain dalam rangkaian Overlay adalah seperti berikut:
import requests response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
4 Gunakan Docker Compose untuk mengurus komunikasi berbilang bekas
Docker Compose ialah Alat untuk mengurus berbilang bekas Docker Ia boleh menentukan kaedah permulaan dan parameter berbilang bekas melalui fail YAML. Dalam Docker Compose, kaedah komunikasi antara bekas boleh dikonfigurasikan dalam fail YAML.
Berikut ialah contoh kod YAML yang menggunakan Docker Compose untuk mengurus komunikasi antara berbilang bekas:
version: '3' services: db: image: mysql:5.7 environment: MYSQL_DATABASE: 'mydb' MYSQL_USER: 'root' MYSQL_PASSWORD: 'root' MYSQL_ROOT_PASSWORD: 'root' volumes: - ./db:/var/lib/mysql ports: - '3306:3306' networks: - my-network web: build: . ports: - "5000:5000" volumes: - .:/code networks: - my-network depends_on: - db networks: my-network:
Dalam contoh di atas, db ditambah dengan mentakrifkan rangkaian bernama "my- network" Bekas dan bekas web disambungkan ke rangkaian maya yang sama, dan Pemetaan Port digunakan untuk memetakan port 3306 MySQL ke port 3306 hos.
Ringkasan
Melalui pengenalan artikel ini, anda sepatutnya telah menguasai kaedah komunikasi antara hos Docker yang berbeza. Untuk komunikasi kontena pada hos yang sama, anda hanya perlu menggunakan alamat IP kontena untuk komunikasi kontena pada hos yang berbeza, anda boleh menggunakan rangkaian Pemetaan Port dan Tindanan. Di samping itu, menggunakan Docker Compose menjadikannya lebih mudah untuk mengurus komunikasi antara berbilang bekas.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan komunikasi antara Dockers. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!