Docker – pierwszy kontener z MySQL

Wiemy już czym jest Docker. Instalacja przebiegła pomyślnie – więc czas najwyższy na uruchomienie swojego pierwszego kontenera. Na pierwszy ogień proponuję uruchomić kontener z MySQL’em aby zrozumieć zasadę działania.

Rozpoczynając uruchamianie aplikacji sugeruję sprawdzić w repozytorium czy szukany przez nas obraz nie został wcześniej przygotowany. Jak widać w przypadku MySQL’a gotowy obraz jest przygotowany przez twórców (link). Przełączając się na zakładkę Tags możemy zobaczyć wszystkie dostępne wersje możliwe do ściągnięcia w postaci kontenera, jeśli nie wybierzemy samodzielnie to domyślnie zostanie wybrana wersja o tagu latest.

Aby w pełni zrozumieć proces uruchamiania kontenera należy zapoznać się z paroma parametrami komendy

docker run
  • --name NAZWA – określa nazwę pod jaką będzie widoczny nasz kontener
  • -e ENV_NAME=env_val – tworzy zmienną środowiskową i przypisuje do niej wartość
  • -p PORT_EXTERNAL:PORT_INTERNAL – wystawia port z kontenera na zewnętrzny interface
  • -d – uruchamia w trybie daemon
  • --link name_ext:name:int – tworzy połączenie przez nazwę pomiędzy kontenerami
  • -it – uruchamia kontener w trybie interactive (w przeciwieństwie do -d)
  • -v LOCAL_VOLUME:CONTAINER_VOLUME – montuje lokalny katalog/plik w podane miejsce w kontenerze
  • --rm – usuń kontener po zakończeniu działania

Jeśli na tym etapie nie wszystko jest zrozumiałe to nie ma się czym przejmować, wystarczy odrobina doświadcznia. Tak jak mówiłem na pierwszy ogień spróbujemy uruchomić kontener zawierający mysql w wersji 5.7.15. Zgodnie z dokumentacją wykonujemy komendę:

$ docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=myPassword -p 3306:3306 mysql:5.7.15

Krótko wyjaśniając – utworzyliśmy właśnie kontener o nazwie mysql, który będzie widoczny na wszystkich naszych interfejsach sieciowych na porcie 3306 z dostępem root/myPassword. Sprawdźmy zatem czy kontener się uruchomił:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
267339dbd678        mysql:5.7.15        "docker-entrypoint.sh"   2 minutes ago       Up 2 minutes        0.0.0.0:3306->3306/tcp   mysql

Każdy pewnie zauważył nową komendę docker ps, wyświetla ona uruchomione kontenery w naszym systemie. Używając przełącznika -a możemy zobaczyć wszystkie dostępne w naszym systemie kontenery.


Uwaga !

Utworzony przez nas kontener nie ma zamontowanego zewnętrznego magazynu danych, oznacza to, że jeżeli skasujemy kontener utracimy wszystkie dane w nim zapisane, aby temu zapobiec należy dodać do komendy przełącznik -v /home/devblog/mysql_data:/var/lib/mysql Oznacza to, że katalog /home/devblog/mysql_data zostanie zamontowany w kontenerze w miejscu /var/lib/mysql


Skoro mamy już utworzony kontener to warto byłoby zalogować się do MySQL’a aby sprawdzić poprawność jego działania. Jeśli nie mieliśmy nigdy wcześniej zainstalowanego mysql’a to zapewne nie mamy zainstalowanego pakietu mysql-client w którym znajduje się program pozwalający do połączenia z bazą. Można go zainstalować, ale przecież po to tworzymy kontenery aby nie musieć doinstalowywać rzeczy w naszym systemie. Dlatego też, uruchomimy konektor z kontenera zgodnie z dokumentacją:

docker run -it --rm mysql:5.7.15 mysql -h Host -P 3306 -u root -p

Powyższa komenda uruchamia kontener w trybie interaktywnym (-it), który zostanie usunięty po zakończeniu (–rm), zbudowany z obrazu mysql:5.7.15, zaraz po utworzeniu obrazu zostanie uruchomiona z niego komenda mysql. Dokładniejsze omówienie komendy mysql opistane jest w artykule MySQL – Połączenie z bazą

$ docker run -it --rm mysql:5.7.15 mysql -u root -h 192.168.1.10 -P 3306 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.15 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Podsumowanie

Jedną komenda utworzyliśmy kontener z MySQL’em który działa od razu, a drugą komendą tworzymy sobie obraz tymczasowy aby móc połączyć się z naszą bazą. Czyż to nie wspaniałe ? Zapraszam na dalsze części

 

Dodaj komentarz

avatar
wpDiscuz