Triển khai các databases bằng docker

*Ký bút: devopsedu.vn kế thừa tư tưởng của elroydevops.tech luôn cung cấp kiến thức DevOps thực tế và chi tiết. Mình không cho phép bản thân làm những kiến thức mà mình không tin rằng nó tốt cho mọi người được. Nếu những bài viết dài khiến bạn không thể kiên nhẫn, thì kiến thức này dành cho những ai thật sự cần kiến thức thực tế.

Mạnh, Founder

Tuy nhiên, việc chạy các database dưới dạng container độc lập với những công ty outsourcing nhỏ không phải là hiếm gặp (mình đã từng đi tư vấn nên hiểu được điều này) hoặc việc tạo nhanh chóng các databases phục vụ việc làm lab thì container cũng là một cách vô cùng đơn giản phù hợp.

Triển khai các loại databases bằng docker

Đầu tiên, chúng ta sẽ cần cài đặt docker và docker-compose. Bạn có thể chạy script dưới đây để cài đặt nhanh chóng phiên bản mới nhất với hệ điều hành Ubuntu.

Tạo file bashscript:

devopsedu.vn
# touch docker-install.sh && chmod +x docker-install.sh && vi docker-install.sh

Nội dung trong file như sau:

#!/bin/bash
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install docker-ce -y
sudo systemctl start docker
sudo systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker -v
docker-compose -v

Và khởi chạy file bashscript:

devopsedu.vn
# sh docker-install.sh

Thành công được kết quả:

Cài đặt cloudbeaver bằng docker

Hầu hết các databases khi cài đặt sẽ chỉ có thể tương tác dưới dạng command line (giao diện dòng lệnh) nên mình sẽ tiến hành triển khai một công cụ giúp kết nối và quản lý các databases bằng giao diện trực quan chính là cloudbeaver.

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-cloudbeaver.yml

Nội dung trong file như sau:

version: '3.8'
services:
  cloudbeaver:
    image: dbeaver/cloudbeaver:latest
    container_name: cloudbeaver
    ports:
      - "80:8978"
    volumes:
      - /data/cloudbeaver/:/opt/cloudbeaver/workspace
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-cloudbeaver.yml up -d

Thành công được kết quả:

Tiến hành truy cập trên trình duyệt với địa chỉ IP của server với Port mặc định là 80

Thiết lập thành công được kết quả:

Cài đặt postgresql bằng docker

PostgreSQL là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java.

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-postgresql.yml

Nội dung trong file như sau:

version: '3.8'
services:
  postgres:
    image: postgres:14
    container_name: postgres
    environment:
      POSTGRES_PASSWORD: "95a3FqXFsUDhxRd"
    ports:
      - "5432:5432"
    volumes:
      - /data/postgresql/:/var/lib/postgresql/data
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-postgresql.yml up -d

Thành công được kết quả:

Quay lại cloudbeaver để tiến hành kiểm tra xem đã kết nối được đến database chưa, chọn vào “New Connection” như sau:

Chọn vào PostgreSQL như sau:

Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 5432, User name ⇨ postgres, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:

Chọn vào “Test” đã thấy kết nối thành công đến database như sau:

Cài đặt mariadb bằng docker

MariaDB là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-mariadb.yml

Nội dung trong file như sau:

version: '3.8'
services:
  mariadb:
    image: mariadb:10.6
    container_name: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "95a3FqXFsUDhxRd"
    ports:
      - "3306:3306"
    volumes:
      - /data/mysql/:/var/lib/mysql

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-mariadb.yml up -d

Thành công được kết quả:

Chọn vào MariaDB như sau:

Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 3306, User name ⇨ root, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:

Chọn vào “Test” đã thấy kết nối thành công đến database như sau:

Cài đặt sqlserver bằng docker

MSSQL (SqlServer) là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như NetCore, Java,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-mssql.yml

Nội dung trong file như sau:

version: '3.8'
services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2019-latest
    container_name: mssql
    environment:
      SA_PASSWORD: "95a3FqXFsUDhxRd"
      ACCEPT_EULA: "Y"
    ports:
      - "1433:1433"
    volumes:
      - /data/mssql/:/var/opt/mssql
    restart: always
    user: "root"

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-mssql.yml up -d

Thành công được kết quả:

Chọn vào SQL Server như sau:

Điền các thông tin kết nối của database, với Host ⇨ Địa chỉ IP server, Port ⇨ 1433, User name ⇨ sa, User password ⇨ 95a3FqXFsUDhxRd (các thông tin trong docker-compose) như sau:

Chọn vào “Test” đã thấy kết nối thành công đến database như sau:

Cài đặt mongodb bằng docker

MongoDB là một cơ sở dữ liệu NoSQL (Not Only SQL) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-mongodb.yml

Nội dung trong file như sau:

version: '3.8'
services:
  mongodb:
    image: mongo:4.4
    container_name: mongodb
    ports:
      - "27017:27017"
    volumes:
      - /data/mongo:/data/db
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-mongodb.yml up -d

Thành công được kết quả:

Bạn có thể sử dụng các nền tảng GUI như Mongo compass, Robo 3T,… để kết nối.

Cài đặt redis bằng docker

Redis là một cơ sở dữ liệu in-memory (In-Memory Database) và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-redis.yml

Nội dung trong file như sau:

version: '3.8'
services:
  redis:
    image: redis:6.2
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - /data/redis/:/data
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-redis.yml up -d

Thành công được kết quả:

Bạn có thể sử dụng các nền tảng GUI Redisinsight, Redis Commander,… để kết nối.

Cài đặt memcached bằng docker

Memcached là một hệ thống lưu trữ cache phân tán và trong bộ nhớ (in-memory caching system), được sử dụng để tăng tốc độ truy xuất dữ liệu bằng cách lưu trữ dữ liệu trong bộ nhớ RAM và được sử dụng cực kỳ rộng rãi trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-memcached.yml

Nội dung trong file như sau:

version: '3.8'
services:
  memcached:
    image: memcached:1.6
    container_name: memcached
    ports:
      - "11211:11211"
    volumes:
      - /data/memcached:/data
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-memcached.yml up -d

Thành công được kết quả:

Cài đặt cassandra bằng docker

Cassandra là một hệ quản trị cơ sở dữ liệu NoSQL phân tán và được sử dụng trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-cassandra.yml

Nội dung trong file như sau:

version: '3.8'
services:
  cassandra:
    image: cassandra:latest
    container_name: cassandra
    ports:
      - "9042:9042"
    volumes:
      - /data/cassandra:/var/lib/cassandra
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-cassandra.yml up -d

Thành công được kết quả:

Bạn có thể sử dụng các nền tảng GUI DataStax OpsCenter, Cassandra Reaper,… để kết nối.

Cài đặt oracle bằng docker

Oracle là một cơ sở dữ liệu quan hệ (Relational Database) và được sử dụng trong các dự án thực tế từ các công nghệ (ngôn ngữ lập trình) như Node.js, NetCore, Java, Php, Ruby, Python, Go,…

Tạo file docker-compose:

devopsedu.vn
# vi docker-compose-oracle.yml

Nội dung trong file như sau:

version: '3.8'
services:
  oracle:
    image: oracleinanutshell/oracle-xe-11g
    container_name: oracle
    environment:
      - DB_SID=ORCLCDB
      - DB_PDB=ORCLPDB1
      - DB_DOMAIN=localdomain
      - ORACLE_PWD=95a3FqXFsUDhxRd
    ports:
      - "1521:1521"
    volumes:
      - /data/oracle:/opt/oracle/oradata
    shm_size: '1gb'
    restart: always

Khởi chạy câu lệnh tạo container:

devopsedu.vn
# docker-compose -f docker-compose-oracle.yml up -d

Thành công được kết quả:

Cấu hình bổ sung (bonus):

version: '3.8'

services:
  oracle:
    image: wnameless/oracle-xe-11g-r2:18.04-apex
    container_name: OracleDb
    restart: always
    environment:
      - ORACLE_ALLOW_REMOTE=true
      - ORACLE_DISABLE_ASYNCH_IO=true
      - ORACLE_ENABLE_XDB=true
    ports:
      - 5019:1521
      - 5020:8080

  dbeaver:
    image: dbeaver/cloudbeaver:22.1.1
    container_name: CloudBeaver
    restart: unless-stopped
    volumes:
      - dbeaver-data:/opt/cloudbeaver/workspace
    ports:
      - 5021:8978

volumes:
  dbeaver-data:

Oracle APEX

http://localhost:5020/apex/apex_admin
username: ADMIN
password: Oracle_11g

Truy cập database

Host name or IP server
Port: 1521
Db hoặc sid: xe
DB credentials: system và oracle

Trên đây là các databases thông dụng nhất mà bạn có thể thấy trong các dự án thực tế.

Mình sẽ làm nhiều hướng dẫn hơn về các kỹ năng các công nghệ khác để giúp bạn tối ưu quy trình trong công việc cũng như tiết kiệm chi phí khi phát triển phần mềm. Nếu có góp ý hoặc đề xuất thêm về kiến thức mà bạn mong muốn vui lòng liên hệ contact@devopsedu.vn