Chuyển đến nội dung chính

Docker: Cài đặt Docker Engine trên WSL 2 - Part 1.2

Giới thiệu

Hiện tại, Docker đã công bố chính sách thay đổi về giá cả và đăng ký của họ, yêu cầu đăng ký trả phí cho người dùng bên ngoài mục đích sử dụng cá nhân, giáo dục và doanh nghiệp nhỏ.

Việc thay đổi giấy phép này chỉ áp dụng cho Docker Desktop. Nên bạn không thể cài đặt Docker Desktop cho máy xài Windows và Mac.

Tuy nhiên bạn có thể cài đặt Docker Engine trên Windows bằng Windows Subsystem for Linux 2! Và vì sử dụng Linux, nên bạn sẽ tập làm quen với các lệnh thay vì sử dụng GUI trên Docker Desktop.

WSL và WSL2

Windows Subsystem for Linux, còn gọi là WSL, là một subsystem cho phép người dùng Windows 11 và Windows 10 users sử dụng Linux distributions như Ubuntu, Debian, Fedora, Kali, Alpine, hoặc Suse mà không cần thay đổi hệ điều hành đang sử dụng (Windows).

Bảng so sánh tính năng WSL and WSL2:

Feature WSL WSL2
Integration between Windows and Linux
Fast boot times
Small resource foot print compared to traditional Virtual Machines
Runs with current versions of VMware and VirtualBox
Managed VM
Full Linux Kernel
Full system call compatibility
Performance across OS file systems

Để cài đặt WSL2, bạn tham khảo tại đây: https://nhatkyhoctap.blogspot.com/2022/08/cach-cai-at-va-huy-ang-ky-distro.html

Để kiểm tra phiên bản WSL, bạn gõ
wsl -l -v
Kết quả
  NAME      STATE           VERSION
* Ubuntu    Running         2

Sử dụng WSL

Trong Windows, bạn mở app Windows Terminal (hoặc PowerShell, Command Line), gõ WSL

exit để thoát khỏi WSL,


Kiểm tra WSL và Ubuntu Version

WSL Version: "uname -r"

Ubuntu Version Information: cat /etc/os-release

Cài đặt Docker Engine trên WSL2 (Ubuntu)

Mình chọn Ubuntu, 1 phần vì đây là hệ điều hành quen thuộc, 1 phần vì có rất nhiều bài hướng dẫn gỡ rối khi xảy ra vấn đề.

Ubuntu là một hệ điều hành máy tính dựa trên Debian GNU/Linux, một bản phân phối Linux thông dụng. Tên của nó bắt nguồn từ "ubuntu" trong tiếng Zulu, có nghĩa là "tình người", mô tả triết lý Ubuntu: "Tôi được là chính mình nhờ có những người xung quanh," (I am what I am because of who we all are) một khía cạnh tích cực của cộng đồng

Để sử dụng quyền root, bạn thêm sudo trước mỗi lệnh.

Trước khi cài đặt, bạn cần đảm bảo đã gỡ Ubuntu trên Windows và WSL2

Trên Windows: uninstall Docker Desktop
Trên WSL2:

sudo apt remove docker docker-engine docker.io containerd runc

Các lệnh dưới đây dùng để cài đặt Docker Engine trên Ubuntu

sudo apt-get update
sudo apt-get update và sudo apt-get upgrade là hai lệnh bạn có thể sử dụng để cập nhật tất cả các gói của mình trong Debian hoặc bản phân phối Linux dựa trên Debian.
sudo apt-get install \
 apt-transport-https \
 ca-certificates \
 curl \
 gnupg2 \
 lsb-release
Các dấu \ để xuống dòng, nhìn code đẹp hơn. Hoặc bạn có thể gõ nguyên câu lệnh
sudo apt install — no-install-recommends apt-transport-https ca-certificates curl gnupg2

Gói apt-transport-https này cho phép hệ thống của bạn truy cập các kho lưu trữ qua giao thức HTTPS an toàn.

GnuPG hoặc GPG (GNU Privacy Guard) là một phần mềm được phát triển bởi FSF (Tổ chức Phần mềm Tự do) để triển khai chương trình tương thích OpenPGP. Với nó, bạn có thể mã hóa và giải mã các tin nhắn văn bản thuần túy, các tệp và tạo chữ ký điện tử để bảo mật nội dung mà chúng tôi chuyển qua email hoặc bất kỳ dịch vụ mạng nào khác. Ngoài ra, GPG là miễn phí và miễn phí theo giấy phép GPL.

Lệnh lsb_release hiển thị thông tin LSB (Linux Standard Base) về bản phân phối Linux cụ thể của bạn, bao gồm số phiên bản, tên mã phát hành và ID nhà phân phối.

source /etc/os-release
Mở 1 child process để thực hiện song song với bas. Thêm Docker APT keys
curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo apt-key add
Thêm Docker api repository
echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
Thêm Docker CE
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Docker Community Edition (CE) thì được sử dụng phù hợp với đối tượng là Developers, những team nhỏ – vừa bắt đầu tìm hiểu Docker và tất nhiên là miễn phí.

Bật Docker service

sudo service docker start
Đảm bảo docker group exists
sudo groupadd docker
Đảm bảo Docker nằm trong quyền admin Daemon sẽ bị tắt sau mỗi lần khởi động máy. Dùng câu lệnh sau để kiểm tra và bật docker daemon
$ sudo service --status-all 
$ sudo service docker start
Bật Docker khi khởi động máy
$ sudo systemctl enable docker
Để tắt Docker khi startup
$ sudo systemctl disable docker

Làm thế nào để tạo symbolic link trong Linux

Symbolic Link (liên kết tượng trưng) trong ngành máy tính là thuật ngữ chỉ một file tham chiếu đến file khác hoặc thư mục khác dưới dạng đường dẫn tương đối hoặc tuyệt đối. Nó cũng hay được gọi tắt là Symlink hay softlink. 

Có thể hiểu Symbolic Link đơn giản là đường dẫn trỏ đến vị trí của file nào đó trong hệ thống máy tính. Bạn có thể tạo nhiều symbolic links đặt ở nhiều nơi khác nhau nhưng vẫn trỏ về đúng 1 file gốc. Vì vậy, gia tăng tính tiện lợi cho việc tìm kiếm file trong một dòng lệnh.

Dựa vào tính năng này, bạn có thể tạo project trong Windows, và thực hiện việc build Docker image trong Linux

Tạo symbolic link cho file/thư mục:

ln -s [Specific file/directory] [symlink name]

Lệnh ln trong Linux tạo ra liên kết giữa symbolic link file và file gốc. 

 -s – lựa chọn để tạo Symbolic Links. 

[Specifid file/directory] – tên của file gốc hoặc nơi bạn muốn tạo file link tới

[Symlink name] – tên của file symbolic link

Trường hợp bạn ko ghi rõ symlink name, hệ thống sẽ link tới thư mục hiện hành

Dùng lệnh pwd(viết tắt từ print working directory) được dùng để in ra đường dẫn đến thư mục làm việc hiện tại.

Các thư mục trong Windows sẽ được ánh xạ qua thư mục /mnt

VD:

Trong Windows, bạn có phân vùng: C, D

Gõ 

Giả sử bạn ở thư mục: /home/anbinhtrong

Trong bash, bạn gõ

ls /mnt
Kết quả
c  d  wsl
Trong Windows, bạn có đường dẫn: D:\Practices\Docker
ls /mnt/d/Practice
Kết quả
'Stock 12345'     Docker    'Guideline deploy Docker.docx'                 MicroServices   Templates
 Database         Excels    'Test.xlsx'   MindMaps        Testing
 DesignPatterns   FrontEnd   Kubernetes
Chúng ta sẽ thực hiện tạo link giữa /home/anbinhtrong với folder Docker. Bạn cd tới folder /home/anbinhtrong
ln -s /mnt/d/Practice/Docker
Giả sử bạn đang ở folder /home/anbinhtrong, bạn gõ
ls
Kết quả
Docker
Tạo file readme.txt
touch readme.txt

File readme.txt sẽ được tạo trong D:\Practices\Docker. 

Hi vọng bài viết này sẽ giúp các bạn sử dụng được Docker trong WSL 

Tham khảo

https://roshitrajan.medium.com/install-docker-engine-on-wsl2-32bb7927e4e8

https://levelup.gitconnected.com/running-your-first-docker-container-in-wsl-2-22c71b24038

https://subhankarsarkar.com/wsl2-for-containerised-dot-net-core-development-using-docker/

https://peter-whyte.com/create-a-link-between-local-windows-files-and-wsl/

Chúc các bạn thành công!

Nhận xét

  1. Liệt kê tất cả distro Linux: wsl --list --online

    Trả lờiXóa
  2. Fix: docker cannot start: wget -qO- https://get.docker.com/ | sh

    Trả lờiXóa
  3. Sử dụng Docker with non-root user: https://docs.docker.com/engine/install/linux-postinstall/#specify-dns-servers-for-docker

    Trả lờiXóa
  4. Trường hợp có dấu khoảng trắng, thì bạn thêm dấu \ trước mỗi khoảng trắng
    VD: ln -s /mnt/d/Projects/Lin\ chap/Nganh\ Hon

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.