Trong bài lab lần này, chúng ta sẽ tìm hiểu về docker. Vậy docker là gì?
Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng.
Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời gian chạy. Bằng cách sử dụng Docker, bạn có thể nhanh chóng triển khai và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và biết chắc rằng mã của bạn sẽ chạy được.
Nhưng để dễ tiếp cận nhất, cứ coi docker là máy ảo với các thành phần như:
- Docker hub: Là cloud lưu trữ các Docker image (Giống như AMI của AWS)
- Docker Container : Là các Instance (Giống như EC2 trong AWS)
- Docker Network: Có các tính năng tương tự như network của VMware/Virtualbox
- Docker volume: Có thể mount các thư mục trên máy host(máy thật) vào Container, hoặc có thể sử dụng ổ mạng nếy để Container instance có bị reset, tạo lại Container cũng không bị mất dữ liệu
- Docker Container sẽ stopped/Exited ngay lập tức nếy trong Container không có chương trình nào đang chạy. Nên có thể gọi container với /bin/bash nếu không có gì chạy trong Instance Container
Trên docker hub có sẵn gần như các loại image cho mọi như cầu phổ biến. Tuy nhiên, nếu muốn, có thể tạo Clean Image ban đầu từ bộ hệ điều hành có sẵn.
Ví dụ: tạo image CleanUbuntu trên máy ảo EC2 từ bộ cài Ubuntu 20.04(tên mã là focal):
Bước 1: Chuẩn bị máy ảo EC2 chạy Ubuntu. Cài đặt công cụ tạo bộ cài Ubuntu với lệnh sau:
sudo apt-get update
sudo apt install debootstrap
Bước 2: Cài đặt docker
Chạy lệnh tạo file system cài ubuntu 20.04(focal) vào thư mục con focal trong thư mục này với lệnh sau:
sudo debootstrap focal focal
ls focal
Cài đặt phần mềm docker lên EC2:
sudo apt install docker.io -y
Bước 3: Tạo docker image
pwd
sudo tar -C focal -c. | sudo docker import - focal
Chạy thêm 1 container khác:
sudo docker run -it focal /bin/bash
Xem các container trên máy:
sudo docker container ls -a
Nếu muốn chạy docker không cần quyền sudo thì add USER vào group docker:
sudo usermod -aG docker $USER
newgrp docker //để việc thay đổi có hiệu lực
hoặc exec su -l $USER
Kiểm tra log của container với lệnh sau:
sudo ls /var/lib/docker/containers/ -la
Giới hạn kích thước file log bằng cách cấu hình file : /etc/docker/daemon.json
sudo nano /etc/docker/daemon.json
Sửa nội dung file sau:
{
"log-driver":"json-file",
"log-opts":{
"max-size":"50m",
"max-file":"7"
}
}
Sau đó lưu lại và khởi động lại docker
sudo systemctl restart docker
Các container mới sẽ chịu cấu hình mặc định này
Export và import image trong Docker
Docker lưu repository chứa các image và các layer, container ở đường dẫn: /var/lib/docker
Nếu muốn export một image từ responsitory trở lại file tar để copy và import vào máy khác thì dùng lệnh:
docker save --output name.tar name_docker_image
Sau khi copy xong, import sang máy khác chúng ta dùng lệnh:
docker load -i file.tar