Sambungan kontena docker


Sebelum ini kami melaksanakan akses kepada perkhidmatan yang dijalankan dalam bekas docker melalui port rangkaian. Seterusnya, mari kita sambungkan ke bekas docker melalui port


Pemetaan port rangkaian

Kami mencipta bekas untuk aplikasi python.

php@php:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

Selain itu, kami boleh menentukan alamat rangkaian tempat kontena terikat, seperti mengikat 127.0.0.1.

Kami menggunakan parameter -P untuk mencipta bekas dan menggunakan docker ps untuk melihat port 5000 terikat kepada hos port 32768.

php@php:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
fce072cc88ce        training/webapp     "python app.py"     4 minutes ago       Up 4 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

Kami juga boleh menggunakan bendera -p untuk menentukan bahawa port kontena terikat pada port hos.

Perbezaan antara kedua-dua kaedah ialah:

  • -P: ialah port dalaman kontena yang dipetakan secara rawak ke port tinggi hos.

  • -p : ialah port dalaman kontena yang terikat pada port hos yang ditentukan.

php@php:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
php@php:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
33e4523d30aa        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp    berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     8 minutes ago        Up 8 minutes        0.0.0.0:32768->5000/tcp   grave_hopper

Selain itu, kita boleh menentukan alamat rangkaian yang mana bekas itu terikat, seperti mengikat 127.0.0.1.

php@php:~$ docker run -d -p 127.0.0.1:5001:5002 training/webapp python app.py
95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c
php@php:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
95c6ceef88ca        training/webapp     "python app.py"     6 seconds ago       Up 6 seconds        5000/tcp, 127.0.0.1:5001->5002/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     10 minutes ago      Up 10 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

Dengan cara ini kita boleh mengakses port 5002 kontena dengan mengakses 127.0.0.1:5001.

Dalam contoh di atas, port tcp diikat secara lalai Jika anda ingin mengikat port UPD, anda boleh menambah /udp selepas port. Perintah

php@php:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
php@php:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                NAMES
6779686f06f6        training/webapp     "python app.py"     4 seconds ago       Up 2 seconds        5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya
95c6ceef88ca        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        5000/tcp, 127.0.0.1:5001->5002/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"     12 minutes ago      Up 12 minutes       0.0.0.0:32768->5000/tcp              grave_hopper

docker port membolehkan kami menyemak status pengikatan port dengan cepat.

php@php:~$ docker port adoring_stonebraker 5002
127.0.0.1:5001

Sambungan Kontena Docker

Pemetaan port bukan satu-satunya cara untuk menyambungkan docker ke bekas lain.

Docker mempunyai sistem sambungan yang membenarkan berbilang bekas disambungkan bersama dan berkongsi maklumat sambungan.

Sambungan Docker akan mewujudkan hubungan ibu bapa-anak, di mana bekas induk boleh melihat maklumat bekas anak.


Penamaan bekas

Apabila kami mencipta bekas, docker akan menamakannya secara automatik. Selain itu, kita juga boleh menggunakan bendera --name untuk menamakan bekas, contohnya:

php@php:~$  docker run -d -P --name php training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

Kita boleh menggunakan perintah docker ps untuk melihat nama kontena.

php@php:~$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
43780a6eabaa        training/webapp     "python app.py"     3 minutes ago       Up 3 minutes        0.0.0.0:32769->5000/tcp   php