Docker konteynerlər: VPS-də necə istifadə etmək

Docker - tətbiqləri konteynerlərdə paketləyib istənilən serverə deploy etməyə imkan verən platforma. VPS-də Docker ilə tətbiq quraşdırma 10 dəfə sürətlənir.

Docker niyə vacibdir?

"Mənim serverdə işləyirdi"

Klasik problem - kod yerli kompüterdə işləyir, serverdə yox. Docker hər iki yerdə eyni mühit təmin edir.

Hazır image-lər

WordPress, MySQL, Redis, Nginx - hazır Docker image-lər. Bir komandla qurulur.

Docker quraşdırma

curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker

İlk konteyner

docker run hello-world

Docker Hub-dan image endirilir, konteyner başlayır.

Image və konteyner

Image

"Template" - oxunabilən fayl sistemi. WordPress image - WordPress kodu, PHP, lazımi konfiqurasiya.

Konteyner

Image-dən yaranan "instance" - işləyən process.

Common komandalar

docker ps              # işləyən konteynerlər
docker ps -a           # bütün konteynerlər
docker images          # endirilmiş image-lər
docker stop CONTAINER  # dayandırmaq
docker rm CONTAINER    # silmək
docker rmi IMAGE       # image silmək

WordPress Docker-də

Tək komand

docker run -d \
  --name wordpress \
  -p 80:80 \
  -e WORDPRESS_DB_HOST=mysql \
  -e WORDPRESS_DB_USER=wp \
  -e WORDPRESS_DB_PASSWORD=password \
  wordpress

Docker Compose

Multi-konteyner orchestration

docker-compose.yml faylı - bir neçə konteyner birgə işləyir.

Nümunə

version: "3"
services:
  wordpress:
    image: wordpress
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wp
      WORDPRESS_DB_PASSWORD: password
    depends_on:
      - db
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Başlatmaq

docker-compose up -d

Volumes (persistent data)

Niyə vacibdir?

Konteyner silinsə data itir. Volume - host-dan disk yer monte edilir.

Named volume

docker volume create wp_data
docker run -v wp_data:/var/www/html wordpress

Networking

Docker network

docker network create app-net
docker run --network app-net wordpress

Konteynerlər arasında DNS adı ilə əlaqə.

Dockerfile - custom image

FROM php:8.3-fpm
RUN docker-php-ext-install pdo_mysql
COPY . /var/www/html
WORKDIR /var/www/html

Docker registry

Docker Hub

Pulsuz public registry. Hər kəs image push edə bilər.

Private registry

Şirkət üçün öz registry. Docker private hub və ya AWS ECR.

Konteyner monitoring

docker stats

docker stats

Real-time CPU, RAM istifadəsi hər konteyner üçün.

Portainer GUI

Web UI Docker üçün

Brauzerdən konteynerləri idarə et - command-line lazım deyil.

Production-da Docker

Docker Swarm

Docker-in öz orkestrasiyası - kiçik production üçün.

Kubernetes

Industri standartı - böyük production, microservices.

Hostinq.az VPS + Docker

KVM virtualizasiya

Hostinq.az KVM VPS-də Docker tam dəstəklənir. Hər tip tətbiq qurmaq olar.

Docker Compose templates

WordPress, Nextcloud, GitLab - hazır template-lər kütləvi istifadə olunur.

Hostinq.az VPS - Docker hazır.

Paylaş: