Wyślij zapytanie Dołącz do Sii

Zakres funkcjonalności kontenera powinien być ograniczony do niezbędnego minimum. W konsekwencji już przy próbie zbudowania prostego systemu informatycznego stajemy przed koniecznością wymiany informacji pomiędzy kontenerami. Jednym ze sposób realizacji tej potrzeby jest łączenie kontenerów i udostępnianie ich portów. W tym wpisie zostanie przedstawiony sposób udostępniania portów pomiędzy kontenerem a systemem operacyjnym gospodarza oraz pomiędzy kontenerami.

Ten wpis jest częścią serii wpisów o Dockerze. Jeżeli jakieś pojęcie jest używane bez wyjaśnienia to prawdopodobnie zostało wprowadzone w jednym z wcześniejszych wpisów.

* Zachęcamy również do zapoznania się z odświeżonymi w grudniu 2021 i styczniu 2022 artykułami nt. Dockera, które znajdziecie pod tym wpisem.

Połączenie kontener – system gospodarza

Praca nad wieloma projektami wymaga korzystania z usług, które czasem realizują podobne funcjonalności, np. mysql, postgres, redis, memcache, uwsgi, gunicorn, nginx, apache. Poza tym różne projekty mogą wymagać rożnych wersji tych samych usług. Problem nagromadzenia usług oraz konfliktów ich wersji można rozwiązać korzystając z odseparowanego środowiska projektu w wirtualnej maszynie lub kontenerach Dockera.

Stwórzmy dwa kontenery bazy danych postgres jeden w wersji 9.0 i drugi w wersji 9.5. W obu kontenerach postgres działa na porcie 5432. Za pomocą opcji -p przekierujemy porty 5432 kontenerów na porty 9000 i 9500 systemu gospodarza.

docker run -d --name="postgres-container-9.0" -p 9000:5432 postgres:9.0
docker run -d --name="postgres-container-9.5" -p 9500:5432 postgres:9.5

Za pomocą klienta postgresa zainstalowanego w systemie gospodarza dla każdego kontenera:

  • sprawdźmy wersje działającego w nim serwera bazy danych,
  • stwórzmy jedną bazę danych,
  • wyświetlmy listę dostępnych baz.
psql -U postgres -h localhost -p 9000 -c"select version()"
psql -U postgres -h localhost -p 9000 -c"CREATE DATABASE docker90"
psql -U postgres -h localhost -p 9000 -c"\list"
psql -U postgres -h localhost -p 9500 -c"select version()"
psql -U postgres -h localhost -p 9500 -c"CREATE DATABASE docker95"
psql -U postgres -h localhost -p 9500 -c"\list"

W wyniku powyższych poleceń w systemie operacyjnym gospodarza powinniśmy mieć dostęp do dwóch instancji bazy danych postgres. Jednej w wersji 9.0 działającej na porcie 9000, drugiej w wersji 9.5 działającej na porcie 9500. W bazie danych w wersji 9.0 powinna znajdować się baza o nazwie „docker90”, a w bazie danych w wersji 9.5 baza o nazwie „docker95”.

Połączenie kontener – kontener

Kontenery mogą udostępniać swoje porty innym kontenerom bez konieczności eksponowania ich do systemu gospodarza. Żeby to zrobić należy udostępnić co najmniej jeden port kontenera za pomocą opcji --expose, a następnie połączyć kontenery za pomocą opcji --link.

Uruchommy kontener bazy danych udostępniający port 5432 za pomocą opcji --expose.

docker run -d --expose=5432 --name="postgres-container" postgres

Uruchommy kontener ubuntu i połączmy go z kontenerem bazy danych za pomocą opcji --link.

docker run -d -it --name="ubuntu-container" --link="postgres-container" ubuntu

Otwórzmy powłokę kontenera ubuntu uzyskując swobodny dostęp do jego systemu plików.

docker attach ubuntu-container

Użycie opcji --link powoduje, zmapowanie adresu IP kontenera bazy danych na nazwę postgres-container. Możemy to łatwo sprawdzić wyświetlając zawartość pliku /etc/hosts.

cat /etc/hosts

Doinstalujmy do ubuntu klienta postgresa i spróbujmy połączyć się z serwerem bazy danych z kontenera postgres-container.

apt-get install -y postgres-client
psql -U postgres -h postgres-container

W wyniku powyższych poleceń powinniśmy uzyskać dostęp do wiersza poleceń serwera bazy danych postgres.

* Zaktualizowane w 2021 i 2022 artykuły nt. Dockera

Spis wpisów w serii

4.2/5 ( głosy: 4)
Ocena:
4.2/5 ( głosy: 4)
Autor
Avatar
Piotr Wierzgała

Programista Python zainteresowany tematyką uczenia maszynowego.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?