Course Content
1. DevOps overview
DevOps là gì
0/1
4. Kubernetes từ cơ bản đến nâng cao
0/20
8. Monitoring, Logging và Tracing
Khóa Học: DevOps Zero to Hero. (Đăng nhập để xem các video 1 cách miễn phí)

1) Kiểm tra docker đang chạy

root@work-space-u20:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

root@work-space-u20:~# docker ps -a
CONTAINER ID   IMAGE                           COMMAND                  CREATED        STATUS                       PORTS                                       NAMES
f0b85ad30e58   redis                           "docker-entrypoint.s…"   5 months ago   Exited (255) 5 months ago    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   frosty_beaver
ee03d8f019e5   mrnim94/sops-ui:latest          "/usr/bin/supervisor…"   7 months ago   Exited (255) 5 months ago    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   sops-ui_laravel_1
89e2c94b60df   mrnim94/sops-guardians:latest   "./app"                  7 months ago   Exited (255) 5 months ago    9999/tcp                                    sops-ui_golang_1
ceccd7efe17d   build-oauth2_proxy_proxy        "/bin/oauth2-proxy"      2 years ago    Exited (255) 12 months ago   0.0.0.0:8084->4180/tcp, :::8084->4180/tcp   build-oauth2_proxy_proxy_1
07697de0ca90   redis                           "docker-entrypoint.s…"   2 years ago    Exited (255) 5 months ago    6379/tcp                                    build-oauth2_proxy_redis_1

Bạn cũng có thể show ra các container IDs

root@work-space-u20:~# docker ps -aq
254d6f91062b
235c4bdb8283
7820adc4311a
07030c5c9a0d

2) Cài đặt database trên docker

2.1) Cài đặt mariadb

https://hub.docker.com/_/mariadb

docker run mariadb:11.6.2

2.2) Khai báo Environment trên docker

docker run -e MYSQL_ROOT_PASSWORD=**** mariadb:11.6.2

-e MYSQL_ROOT_PASSWORD=*****: Câu lệnh này đặt một biến môi trường trong container MariaDB. Biến này cấu hình mật khẩu cho tài khoản root của MariaDB. Trong trường hợp này, mật khẩu là ******* (có thể là mật khẩu bạn cung cấp thực tế). Điều này cần thiết để có thể truy cập vào cơ sở dữ liệu MariaDB với quyền root.

2.3) Yêu cầu Docker chạy container ở chế độ nền

docker run -d -e MYSQL_ROOT_PASSWORD=**** mariadb:11.6.2

-d (viết tắt của --detach): Tham số này yêu cầu Docker chạy container ở chế độ nền (detached mode), nghĩa là container sẽ chạy ngầm mà không chiếm dụng terminal của bạn. Điều này giúp bạn tiếp tục sử dụng terminal trong khi container vẫn hoạt động.

Bạn có thể đế ý là lúc này chúng ta lại chạy thêm 1 container nữa chứ không edit container cũ:

root@work-space-u20:~# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS         PORTS      NAMES
254d6f91062b   mariadb:11.6.2   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   3306/tcp   exciting_lehmann
235c4bdb8283   mariadb:11.6.2   "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes   3306/tcp   naughty_elbakyan

Bạn thấy là container có nhưng cài tên rất là lạ

2.4) Đặt tên cho container:

docker run -d --name center-mariadb -e MYSQL_ROOT_PASSWORD=**** mariadb:11.6.2

--name center-mariadb: Đây là tên mà bạn muốn đặt cho container. Container sẽ được gọi là center-mariadb, giúp bạn dễ dàng quản lý container sau này bằng cách sử dụng tên này.

2.5) Đi vào trong container

đương nhiên nếu bạn muốn run command mysql để tương với database mà đã tạo thì chúng ta cần đi vào trong container

Chúng ta có 2 cách đi vào bằng containerID

docker exec -it 254d6f91062b bash

Hoặc là đi vào container bằng container name

docker exec -it center-mariadb bash

rồi tiếp theo run command để cấu hình mariadb

mariadb -u root -p

Thay vì run bash bạn có thể run trước tiếp câu lệnh

docker exec -it center-mariadb mysql -u root -p

create database nimtechnology;
grant  all  privileges  on  nimtechnology.*  to  'nim'@'localhost'  identified by 'nimtechnology******';
grant  all  privileges  on  nimtechnology.*  to  'nim'@'%'  identified by 'nimtechnology******'; 

2.6) Xóa container

root@work-space-u20:~# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS      NAMES
254d6f91062b   mariadb:11.6.2   "docker-entrypoint.s…"   24 minutes ago   Up 24 minutes   3306/tcp   exciting_lehmann
235c4bdb8283   mariadb:11.6.2   "docker-entrypoint.s…"   32 minutes ago   Up 32 minutes   3306/tcp   naughty_elbakyan
root@work-space-u20:~# docker rm -f 254d6f91062b 235c4bdb8283
254d6f91062b
235c4bdb8283

2.7) Export dịch vụ trên docker

root@work-space-u20:~# docker run -d -p 33006:3306 --name center-mariadb -e MYSQL_ROOT_PASSWORD=***** mariadb:11.6.2
018e2ea100fb85af6952eda66806424e39240b98f71962b81cb6469a6aa661ac
root@work-space-u20:~# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS        PORTS                                         NAMES
018e2ea100fb   mariadb:11.6.2   "docker-entrypoint.s…"   2 seconds ago   Up 1 second   0.0.0.0:33006->3306/tcp, :::33006->3306/tcp   center-mariadb

 

-p 3306:3306: Phần này chỉ định cổng mà container sẽ sử dụng.

  • 3306 ở bên trái là cổng trên máy chủ của bạn (host).
  • 3306 ở bên phải là cổng trong container. Vì vậy, câu lệnh này mở cổng 3306 trên máy chủ của bạn và chuyển tiếp nó vào cổng 3306 trong container, giúp bạn truy cập vào MariaDB từ ngoài container.

Từ đây bạn có thể thực hiện kết nối vào database

2.8) Đưa data trong container ra ngoài máy

Điều này giúp bạn duy trì dữ liệu ngay cả khi container bị dừng hoặc xóa, vì dữ liệu sẽ được lưu trữ trên máy chủ thực và không bị mất đi.

docker run -d -p 3306:3306 --name center-mariadb -e MYSQL_ROOT_PASSWORD=***** -v /home/docker/mariadb:/var/lib/mysql mariadb:11.6.2

-v /home/docker/mariadb:/var/lib/mysql: Phần này tạo một volume (đĩa ảo) để lưu trữ dữ liệu của MariaDB.

  • /home/docker/mariadb là thư mục trên máy chủ của bạn (host), nơi dữ liệu của MariaDB sẽ được lưu trữ.
  • /var/lib/mysql là thư mục mặc định trong container nơi MariaDB lưu trữ dữ liệu cơ sở dữ liệu của nó.

2.9) Xem log của một container Docker

docker logs <container_name or container_id>

Nếu log quá dài và bạn chỉ cần xem các dòng log gần đây nhất

docker logs -f --tail 10 container_name

Các phần của câu lệnh:

  1. docker logs:

    • Lệnh docker logs dùng để lấy các log (dữ liệu đầu ra) từ container. Đây là công cụ giúp bạn xem thông tin chi tiết về hoạt động của container trong quá trình chạy. Các log này có thể là thông tin lỗi, thông tin hoạt động của ứng dụng hoặc bất kỳ dữ liệu nào được xuất ra từ container.
  2. -f (viết tắt của --follow):

    • Tham số -f cho phép bạn “theo dõi” (follow) log của container theo thời gian thực. Khi bạn sử dụng tham số này, bạn sẽ nhận được cập nhật liên tục về log mới nhất khi container có thêm hoạt động hoặc đầu ra mới.
    • Điều này tương tự như bạn sử dụng lệnh tail -f trên file log trong Linux. Các log sẽ được cập nhật liên tục mà không cần phải chạy lại lệnh.
  3. --tail 10:

    • Tham số --tail giúp bạn chỉ lấy một số dòng cuối của log.
    • 10 ở đây có nghĩa là bạn chỉ muốn xem 10 dòng cuối cùng của log. Đây là cách nhanh chóng để xem các thông tin mới nhất mà không phải lướt qua toàn bộ log (đặc biệt nếu container đã chạy lâu và log rất dài).
    • Bạn có thể thay số 10 bằng một số khác để xem nhiều hoặc ít dòng log.

2.10) Upgrade version cho ứng dụng.

docker rm -f 07064f7a3cb0
docker run -d -p 33006:3306 --name center-mariadb -e MYSQL_ROOT_PASSWORD=***** -v /root/mylab-docker/mariadb:/var/lib/mysql mariadb:11.7.2

Bạn cứ xóa container cũ và run container với tag mới hơn.
trược khi bạn upgrade thì bạn có thể đọc trước tài liệu hoặc run demo trên local trước để thấy được nhưng impact khi upgrade version.

0% Complete