Hướng Dẫn Docker Cơ Bản Cho Dev Mới Học Container

Hướng Dẫn Docker Cơ Bản Cho Dev Mới Học Container
Hướng Dẫn Docker Cơ Bản Cho Dev Mới Học Container

Hướng dẫn sử dụng Docker cơ bản cho dev mới học container luôn bắt đầu từ một câu hỏi quen thuộc: vì sao có người nghe Docker đã lâu mà vẫn chưa dùng được? Trong nhóm chúng tôi, không ít bạn sinh viên và dev mới đi làm đều kể lại cùng một chuyện. Họ làm theo tutorial, chạy lệnh xong thì thành công, nhưng hỏi lại thì không biết lệnh đó thực sự làm gì. Hồi mới học, chúng tôi cũng từng như vậy. Phần lớn tài liệu được viết cho người đã quen, nên người mới dễ lạc giữa một rừng lệnh.

Thiếu hiểu biết về container thường khiến bạn vấp ngay từ đầu. Có bạn nghĩ Docker là một chiếc máy ảo thu nhỏ, rồi thấy nó nhẹ hơn hẳn mà không hiểu vì sao. Có bạn học thuộc một loạt lệnh nhưng không biết khi nào nên dùng, và tuần sau đã quên sạch. Vì vậy, bài này đi từ nền tảng: hiểu bản chất trước, gõ lệnh sau. Cách học đó giúp bạn nhớ lâu hơn, và khi gặp Docker ở công ty sẽ đỡ bỡ ngỡ hơn nhiều.

Docker Là Gì Và Vì Sao Dev Cần Biết Đến Nó

Docker Là Gì Và Vì Sao Dev Cần Biết Đến Nó
Docker Là Gì Và Vì Sao Dev Cần Biết Đến Nó

Trước khi cài đặt, bạn nên hiểu Docker giải quyết bài toán gì. Giả sử bạn viết một ứng dụng web bằng Python và nó chạy tốt trên máy mình. Bạn gửi code cho đồng đội, nhưng họ chạy lại thì báo lỗi. Kiểm tra mới thấy máy họ cài sai phiên bản Python, thiếu thư viện, còn database cũng khác. Kiểu lỗi “máy tôi chạy được mà” xuất hiện ở khắp nơi, và Docker ra đời để xử lý đúng chuyện này.

Docker cho phép đóng gói ứng dụng cùng môi trường chạy của nó vào một container độc lập. Bạn có thể hình dung container như một chiếc hộp đã được sắp xếp sẵn, bên trong có code, thư viện và công cụ cần thiết. Mang hộp đó sang bất kỳ máy nào đã cài Docker, mở ra là chạy, không cần lo máy kia thiếu thứ gì.

Nghe thì giống máy ảo, nhưng container nhẹ hơn nhiều. Máy ảo phải mang theo cả một hệ điều hành riêng nên tốn tài nguyên. Container dùng chung nhân của hệ điều hành máy chủ, nhờ vậy khởi động nhanh và dung lượng nhỏ hơn. Với dev, lợi ích rõ nhất là không còn cảnh cài lại môi trường mỗi lần đổi máy hay đổi dự án.

Khi làm việc nhóm, mỗi người dùng một máy khác nhau, Docker giúp cả nhóm chạy trên cùng một môi trường. Khi cần đưa ứng dụng lên server, bạn cũng chỉ cần vài lệnh. Vì vậy, nhiều công ty phần mềm, từ startup đến doanh nghiệp lớn, đều dùng Docker trong quy trình phát hành. Nếu bạn mới học lập trình mà đã quen Docker, đó là lợi thế thật sự khi đi xin việc.

Các Bước Cơ Bản Để Bắt Đầu Dùng Docker

Các Bước Cơ Bản Để Bắt Đầu Dùng Docker
Các Bước Cơ Bản Để Bắt Đầu Dùng Docker

Phần này sẽ đưa bạn từ lúc chưa có gì đến khi chạy được một ứng dụng trong container. Chúng tôi cố gắng giải thích ý nghĩa từng lệnh thay vì chỉ bảo gõ theo. Hãy mở terminal và làm song song, vì học Docker phải thực hành ngay.

Cài đặt Docker và làm quen với các lệnh quản lý container

Trước tiên, nếu dùng Windows hoặc macOS, bạn cài Docker Desktop. Người dùng Ubuntu có thể cài Docker Engine qua apt. Chúng tôi thường khuyên người mới bắt đầu bằng Docker Desktop vì có giao diện đồ họa, dễ theo dõi các container đang chạy. Quá trình cài khá đơn giản: tải file về rồi cài như phần mềm thông thường. Xong, mở terminal và gõ docker --version. Nếu hiện số phiên bản, máy bạn đã sẵn sàng.

Lệnh đầu tiên nên thử là docker run hello-world. Lệnh này tải về một image nhỏ tên hello-world rồi chạy thử. Image giống như bản thiết kế để tạo container, còn container là thực thể đang chạy được dựng từ image đó. Nói dễ hiểu: image giống file cài đặt, container giống chương trình đang mở. Nếu image chưa có trên máy, lệnh sẽ tự kéo về từ Docker Hub, kho image công cộng.

Sau khi chạy xong, thử thêm vài lệnh quản lý cơ bản. docker ps cho bạn xem các container đang chạy, còn docker ps -a hiển thị cả những container đã dừng. Bạn sẽ thấy container hello-world đã thoát, vì nó chỉ in thông báo rồi kết thúc. Lệnh docker images liệt kê các image đang có trên máy. Ba lệnh này giúp bạn nắm vòng đời cơ bản của container.

Một lưu ý nhỏ: nhiều bạn hay quên dừng container nên máy chậm dần. Lệnh docker stop [tên hoặc ID] dùng để dừng container đang chạy, còn docker rm [ID] xóa container đã dừng. Đừng ngại xóa, vì bạn luôn có thể dựng lại từ image. Giữ thói quen dọn dẹp sẽ giúp máy gọn gàng hơn nhiều.

Thực hành đóng gói một ứng dụng Flask đơn giản

Chạy image có sẵn thì dễ, nhưng đến lúc bạn phải tự đóng gói ứng dụng của mình. Ví dụ dưới đây là một web nhỏ viết bằng Python với Flask, hiển thị dòng chữ “Hello from Docker”. Chưa biết Flask cũng không sao. Bạn chỉ cần tạo file app.py với nội dung sau:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello from Docker"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

Để Docker biết cách dựng môi trường cho ứng dụng này, bạn tạo thêm một file tên Dockerfile. Hãy coi nó như công thức nấu ăn, mô tả từng bước để tạo ra image. Nội dung tối thiểu như sau:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]

Đọc từng dòng sẽ dễ hiểu hơn. FROM cho biết ta bắt đầu từ image Python có sẵn. WORKDIR tạo thư mục làm việc bên trong container. COPY chép file từ máy bạn vào container. RUN chạy lệnh cài thư viện, còn CMD là lệnh khởi động ứng dụng khi container bắt đầu chạy. Đừng quên tạo file requirements.txt chỉ với một dòng là flask.

Khi đã đủ ba file, chạy docker build -t my-flask-app . để tạo image. Dấu chấm cuối lệnh nghĩa là dùng Dockerfile trong thư mục hiện tại. Lần build đầu có thể mất vài phút, tùy tốc độ mạng. Sau đó chạy docker run -p 5000:5000 my-flask-app. Lệnh này ánh xạ cổng 5000 bên trong container ra cổng 5000 trên máy bạn. Mở trình duyệt vào localhost:5000, bạn sẽ thấy dòng chữ “Hello from Docker”. Vậy là bạn đã chạy ứng dụng trong container thành công.

Quy trình này là nền tảng bạn sẽ lặp lại mỗi khi cần container hóa một ứng dụng: viết Dockerfile, build image, chạy container. Làm càng nhiều, bạn càng quen tay. Chúng tôi từng thấy không ít bạn mới bỏ cuộc vì nghĩ Docker phức tạp, trong khi chỉ cần nắm vài khái niệm là đủ dùng cho đa số tình huống.

Một lỗi rất hay gặp là quên tạo file .dockerignore. Khi đó Docker sẽ chép cả những thư mục không cần thiết như node_modules hay __pycache__ vào image, khiến image phình to và build chậm. Hãy tạo file này và liệt kê các mục cần bỏ qua, làm tương tự như .gitignore. Mẹo nhỏ này giúp image gọn hơn đáng kể.

Cũng cần nhớ container được “chụp” từ image tại thời điểm build. Khi sửa code, container đang chạy vẫn là phiên bản cũ. Quy tắc đơn giản: sửa code, build lại image, rồi chạy lại container. Nhiều bạn mới bối rối vì quên bước build lại, rồi thắc mắc sao sửa mãi không thấy thay đổi.

Khi ứng dụng cần thêm database, bạn sẽ có ít nhất hai container chạy cùng nhau, ví dụ một cho web và một cho PostgreSQL. Lúc này Docker Compose rất hữu ích. Bạn khai báo các dịch vụ trong file docker-compose.yml rồi khởi động tất cả chỉ bằng một lệnh. Đây là bước tiếp theo sau khi đã quen Docker cơ bản.

Khi chọn image, nên ưu tiên các bản gọn. Với Python, python:3.9-slim nhỏ hơn bản đầy đủ đáng kể. Với Node.js, node:18-alpine rất nhẹ. Thói quen chọn image gọn giúp tiết kiệm băng thông và tăng tốc độ build.

Cuối cùng, khi container gặp lỗi, đừng đoán mò. Lệnh docker logs [tên container] hiển thị output của ứng dụng bên trong, và phần lớn lỗi đều để lại dấu vết ở đó. Có lần chúng tôi gỡ được cả một lỗi trong dự án chỉ nhờ đọc kỹ log, thay vì sửa lung tung cả buổi chiều.

Kết Luận

Kết Luận
Kết Luận

Docker không khó như nhiều người vẫn nghĩ. Chỉ cần hiểu container là gì, nắm vài lệnh cơ bản và tự tay đóng gói một ứng dụng nhỏ, bạn đã đi được một đoạn đường dài. Dev mới làm quen Docker sẽ dễ tiếp cận quy trình phát triển hiện đại hơn và tự tin hơn khi vào công việc thực tế. Đừng dừng ở đây, hãy thử container hóa một dự án thật của bạn. Nếu cần thêm kiến thức nền, bạn có thể tham khảo hướng dẫn sử dụng Git cơ bản cho dev mới để quản lý mã nguồn song song với Docker, hoặc xem top 5 phần mềm, công cụ học tập miễn phí cho dev mới để chuẩn bị đồ nghề cho hành trình lập trình của mình.

Tham khảo thêm tài liệu chính thức tại trang Get Started của Docker để nắm kỹ hơn các khái niệm nền tảng.

Leave a Reply

Your email address will not be published. Required fields are marked *