Bài viết thuộc series Azure
Giới thiệu
Trong bài này ta làm ví dụ tạo VM, cài Docker trên VM, chạy Web Server, sau đó đóng gói nó thành Azure VM Image để sử dụng lại.
Azure Image
Azure Image là bản sao chép toàn bộ của một con VM, bao gồm hệ điều hành, ổ đĩa, ứng dụng được cài trên nó, … Mục đích của Azure Image là gì? Ví dụ trường hợp sau.
Ta tạo con VM và truy cập vào nó cài Git, Docker và chạy các ứng dụng cần thiết. Một ngày nào đó ta lại cần tạo một con VM giống như con hiện tại để chạy cho môi trường dev. Ta phải thực hiện các bước từ đầu, rất mất thời gian. Với Azure Image thì ta chỉ cần đóng gói con VM hiện tại thành Image và tạo một con VM mới từ Image ta vừa đóng gói. Con VM mới sẽ có toàn bộ mọi thứ giống với con cũ.
Tạo VM và cài Docker
Chạy câu lệnh CLI để tạo VM:
az group create --name testresource -l westus2
# Create VM
az vm create \
--resource-group testresource \
--name vm-docker-base \
--image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
--size Standard_DS1_v2 \
--admin-username azureuser \
--generate-ssh-keys
# Open port 80 for web server
az vm open-port --port 80 --resource-group testresource --name vm-docker-base
Truy cập VM:
ipaddress=$(az vm show --resource-group testresource --name vm-docker-base --show-details --query publicIps --output tsv)
ssh azureuser@$ipaddress
Cài Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo chmod +x get-docker.sh
./get-docker.sh
Chạy nginx:
sudo docker run --restart=always -p 80:80 -d nginx
Lấy địa chỉ của VM và truy cập trình duyệt web:
echo $ipaddress
23.182.75.11
Ta sẽ thấy trang Welcome to nginx!. Bây giờ nếu ta cần một Web Server khác, ta tạo con VM mới và truy cập vào nó làm lại từ đầu. Ta có thể dùng Azure Image để đóng gói con VM hiện tại thành Image, sau đó ta tạo con VM khác với Image ta vừa tạo và con VM mới sẽ có sẵn Docker và Nginx Web Server.
Đóng gói VM thành Image
- Truy cập Azure portal, kiếm Virtual machines.
- Chọn VM tên vm-docker-base ta đã tạo
- Ở giao diện VM trên cùng ta chọn Capture
- Resource group chọn testresource
- Mục Share image to Azure compute gallery chọn No, capture only a managed image
- Chọn Review + create và bấm Create, đợi Image được tạo
Tạo VM từ Image mới
Tiếp theo ta tạo VM từ Image ở trên và nó sẽ có đầy đủ Docker và Web Server:
az vm create \
--resource-group testresource \ --resource-group metacrew-dev2 \
--name vm-docker-nginx \
--image vm-docker-base-image-20231218140104 \
--size Standard_DS1_v2 \
--admin-username azureuser \
--generate-ssh-keys
# Open port 80 for web server
az vm open-port --port 80 --resource-group testresource --name vm-docker-nginx
Lấy địa chỉ IP:
az vm show --resource-group testresource --name vm-docker-nginx --show-details --query publicIps --output tsv
20.200.186.127
Kết luận
Ta có thể hình dung Azure Image tương tự như cách ta đóng gói Container Image bằng Docker. Khác ở điểm là ở đây ta đóng gói toàn bộ con VM.
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?