- vừa được xem lúc

Sử dụng Ubuntu trên Docker mà không cần tới máy ảo

0 0 32

Người đăng: Nguyen Van Hiep

Theo Viblo Asia

Trước khi đi vào nội dung chính của bài viết ngày hôm này mình sẽ nói sơ qua đôi nét về Docker - nền tảng để build - deploy - run các ứng dụng vô cùng đơn giản (trên virtualization).

I. Khái quát về Docker

Có thể khi bạn phát triển sản phẩm ứng dụng chạy rất ngon lành trên môi trường dev nhưng khi deploy lên môi trường production nó lại phát sinh ra những lỗi vô cùng khó hiểu, vậy thì làm thế nào để đảm bảo dự án của ta luôn chạy "ngon" trên nhiều môi trường?.

Đừng lo Docker ra đời để giúp bạn khắc phục những hạn chế này. Docker cung cấp khả năng đóng gói và chạy một ứng dụng trong một môi trường tách biệt lỏng lẻo gọi là container. Docker giúp cách ly và bảo mật, cho phép bạn chạy nhiều containers đồng thời trên một máy chủ nhất định.

1. Bạn có thể sử dụng Docker cho những gì?

1. Phân phối nhanh các ứng dụng của bạn

Docker hợp lý hóa vòng đời phát triển bằng cách cho phép các nhà phát triển làm việc trong các môi trường chuẩn hóa sử dụng các bộ chứa cục bộ cung cấp các ứng dụng và dịch vụ của bạn. Các containers rất lý tưởng cho việc tích hợp liên tục và quá trình phát triển liên tục (CI / CD).

2. Môi trường chạy và khả năng mở rộng

Docker platform cho phép giải quyết khối lượng công việc 1 cách rất portable. Docker contains có thể chạy trên laptop, trên các máy ảo hoặc ảo trong trung tâm dữ liệu, các nhà cung cấp đám mây hoặc trong một hỗn hợp các môi trường.

Docker rất portable và light weight làm cho việc quản lý khối lượng công việc linh động, dễ dàng scaling tùy theo tính chất các ứng dụng và dịch vụ của sản phẩm.

2. Kiến trúc Docker

  • Docker Engine là phần core của Docker dùng để tạo, vận chuyển và chạy Docker Container. Docker Engine cung cấp kiến trúc ứng dụng client-server trong đó có một tiến trình chạy ngầm giúp server chạy liên tục đây chính là điểm mấu chốt mình sẽ nói tới ở bài viết này.
  • Dockerfile là một bản "công thức" các nguyên liệu còn thiếu của project.
  • Images là một khuôn mẫu để đúc ra các từ các công thức và nguyên liệu cần thiết config,...
  • Container là 1 instance của Images ...

Hinh như là mình lan man hơi dài về docker rồi nhỉ?, không để các bạn phải chờ lâu mình sẽ đi vào phần chính.

Docker cung cấp platform vô cùng mạnh mẽ, mình sẽ dựa vào đó để xây dựng 1 con Ubuntu vô cùng đơn giản (cụ thể là trên Windows 10 Pro)

II. Setup

Đầu tiên cần ta cần download và setup Docker phiên bản mới nhất trên trang chủ: https://www.docker.com/products/docker-desktop

Sau khi setup hoàn tất ta tiến hành tạo folder bao gồm những thứ cần thiết cho 1 image:

Setup file Dockerfile để chế biến:

FROM ubuntu:18.04 WORKDIR /home RUN apt update -y --fix-missing && apt install wget -y RUN wget https://raw.githubusercontent.com/hypnguyen1209/always-run/main/autorun -P /app COPY install.sh / RUN chmod a+x /app/autorun RUN chmod a+x /install.sh RUN /install.sh # EXPOSE 5051 5052 5053 5054 5055 CMD ["/app/autorun"]

Mấu chốt của container là phải tạo ra tiến trình chạy liên tục cho service, ở đây thì mình đã compiler 1 file code C thực hiện vòng lặp vô hạn.

File install.sh là file chứa những command mà các bạn muốn thực hiện khi build image.

apt install curl -y 

Tiếp theo, chạy terminal để build images:

docker build -t udocker .

Chạy container dưới nền:

docker run -it -d --name udocker udocker:latest

Đặt tên cho container để dễ dàng quản lý hơn, sau đó mình sẽ tiến hành các bước để tự động khởi chạy và execute bash vào container:

docker exec -it udocker /bin/bash

Yeah vậy là ta đã exec được vào bên trong container của images mới tạo, đây chính là thứ chúng ta cần:

Tiếp đó, mình compile 3 file thực thi trên trên Windows (bằng C++) và set environment:

  1. Bật container
// on_udocker.cpp
#include<iostream>
using namespace std; int main(){ system("docker run -it -d --name udocker udocker:latest"); return 0;
}
  1. Tắt container
// off_udocker.cpp
#include<iostream>
using namespace std; int main(){ system("docker rm -f udocker"); return 0;
}
  1. Exec vào container
// udocker.cpp
#include<iostream>
using namespace std; int main(){ system("docker exec -it udocker /bin/bash"); return 0;
}

Compile ra file PE32+

Set environment: Bật windows search tìm kiếm:

Kết quả như trong hình:

Add đường dẫn đến các file compiled:

Đường dẫn của mình là E:\ubuntu-docker\bin:

Done thế là xong bây h hưởng thụ kết quả:

Bật cmd hay bất kì command line tools nào:

III. Tổng kết

Link repo github: https://github.com/hypnguyen1209/udocker

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Tìm hiểu về cách thiết kế Class Diagram

Trong 1 dự án, việc tổ chức code cũng như clean code là 1 điều rất quan trọng, nếu cách thiết kế các class hợp lý và rõ ràng sẽ giúp ích rất nhiều cho việc mở rộng và bảo trì sau này. Để làm được điều này chúng ta cần phải có 1 bản thiết kế Class Diagram thật sự hợp lý.

0 0 76

- vừa được xem lúc

Vòng đời và trạng thái của Thread

A. Giới thiệu.

0 0 118

- vừa được xem lúc

Sự khác nhau giữa những điều tưởng giống nhau - Phần 3

Hôm nay, để tiếp tục cho series so sánh, hãy cùng mình khám phá thêm 2 địa danh mới khá nổi tiếng của Việt Nam mình đó là Cù Lao Chàm và đảo Lý Sơn. .

0 0 100

- vừa được xem lúc

5 sai lầm phổ biến khi code JavaScript mà bạn ít khi để ý

Bài viết hôm nay mình giới thiệu đến các bạn 5 lỗi lập trình thường gặp trong JavaScript. Tất nhiên mình sẽ không nói về các syntax error, hoặc những lỗi quá bình thường.

0 0 43

- vừa được xem lúc

Cách sử dụng dagger 2 cơ bản trong Android

I. Giới thiệu.

0 0 233