Để bắt đầu thì chúng ta cùng chốt ra khung để học, khung mà mình cho là chuẩn nhất cho tất cả mọi người. Chia nhỏ thành các đối tượng và rồi phân tích sâu hơn vào các phần nhỏ. Mình sẽ không nhét tất cả từ khóa vào một hai bài để tránh làm anh em ngộp.
Khung lớn của Docker:
- Docker Client : Đại khái là nơi bạn tương tác với docker dưới định danh người dùng. Nơi bạn gõ command. Cơ bản vẫn là trong cùng một máy thôi nhưng vì phân quyền linux nên tách nó ra cho chuẩn, còn dính thêm mấy thứ tầng sâu nữa nhưng mà không cần bận tâm làm gì.
- Docker Host : Nơi tất cả tác vụ trung tâm của docker khởi chạy. Còn nó chạy cái gì thì sẽ phân tích ở bài sâu trong.
- Registry : Nơi lưu trữ các bản nén hay các layer của Docker, hiểu nó là một con thư viện là được. Ở cấp độ thông dụng thì chúng ta sẽ sử dụng registry:DockerHub. Ở cấp độ công ty hay cá nhân các bạn hoàn toàn có thể tự host một registry là nơi truy cập chung (mệt ssl thôi, không thì làm con untrust cũng được).
Rồi, Ví dụ và Luồng sử dụng.
Cảnh một, sếp bạn bảo bạn:
– Em, tình hình là hệ thống quản trị của công ty thuê ngoài tốn tiền thật sự, em xem thế nào deploy con redmine lên chúng mình dùng thử, em nhở.
*hiểu sâu xa ra là sếp bạn thấy bạn rảnh quá nên muốn bạn làm thử con môi trường mới tiện thể kiếm thêm đồ vào hệ thống công ty. Đại khái là nếu không ngon thì bạn đi mà xóa, xong cũng chả biết sau cái này sẽ là bao cái nữa đâu, cố gắng em nhé*
RỒI, sau khi ngồi suy tính như một con tinh tinh trưởng thành có não và lười biếng bạn quyết định tìm một phương pháp hoàn thiện hơn cho tất cả những vấn đề bây giờ có thể tiếp diễn về sau. Nên bạn tìm đến Docker, tự nhiên như cách mà người yêu cũ của bạn tìm đến bạn mỗi khi say rượu vậy.
Và thế là bạn cài Docker.
Docker và những vấn đề liên quan tốc độ.
Docker là container, sẽ có nhiều container nhỏ ở trên một tàu mẹ, tàu mẹ chính là OS của bạn. Có nghĩa là, nếu ứng dụng bạn chạy là Linux thì sẽ phải chạy trên kernel Linux, ngược lại container Windows buộc phải chạy trên nền Windows như là lẽ dĩ nhiên.
Nhìn tổng quan ra thì!
Có nghĩa là nếu container Linux chạy trên máy Linux sẽ là nhanh nhất vì không cần chạy qua bất kì máy ảo nào, tất cả mọi thứ tồn tại trực tiếp trong Host Linux. Hiển nhiên dẫn tới việc khuyến khích các bạn dùng Linux cho nó ngon. Tất nhiên thì nếu bạn chạy .net core hay gì đấy thì Windows là bắt buộc.
Vậy thì có bao nhiêu cách cài Docker???
3 cách phụ thuộc vào môi trường hệ thống của bạn!
- Docker Toolbox : Một sản phẩm của các cụ cho từ thời điểm docker chưa hỗ trợ hoàn thiện windows. Docker Toolbox có thể chạy trên các phiên bản Windows và MacOS, tuy nhiên bản thân Docker Toolbox không đạt các điều kiện yêu cầu của nền tảng Docker. Tất nhiên nếu bố bạn nhất quyết không cho bạn bỏ win 7 để cài win 10 thì thôi cũng đành.
Docker Toolbox khởi chạy trên môi trường ảo hóa của “Oracle VM VirtualBox” - Docker Desktop : Sản phẩm sau quá trình dài của Docker, có 2 phiên bản Win và Mac. Đã đạt các yêu cầu của Docker. Thế Thôi, chạy trên máy ảo vẫn chậm chạp vờ lờ.
Trên Win sử dụng máy ảo “Hyper-V”, Mac thì chuyển sang dùng “HyperKit”. - Docker just Docker : Linux huyền thoại. Vì nó là cái môi trường toàn diện nhất nên mình xin phép hướng dẫn cài Docker trên Linux đại khái là trên Ubuntu cho nó đơn giản.
OK, Cài Docker.
Mình sẽ mặc định Cài trên Ubuntu nhá. Xóa các phiên bản cũ, ừ nếu bạn là người không biết gì thì cứ làm cho chắc.
sudo apt-get remove docker docker-engine docker.io containerd runc
Tiếp đó chúng ta sẽ update các package từ các nguồn trong máy, ừ để làm nền trong trường hợp máy bạn chưa hề load package lần nào thôi.
sudo apt-get update
Bây giờ là cài các module cho phép Docker lấy image từ mạng qua kết nối an toàn https.
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
Tiếp theo là an toàn đường truyền và định danh Package bằng GPG key. Lệnh dưới đây dùng curl để truy xuất lấy key rồi pipeline key này add thêm vào kho lưu trữ key định danh của nguồn apt.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Tiếp theo là check xem cho chắc, nếu thấy đúng “9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88” thì là ok.
sudo apt-key fingerprint 0EBFCD88
Và giờ thêm nguồn của docker vào quản lý package của máy, Cái này là dành cho dòng chip x86-64/amd64, đại khái là dành cho máy desktop cơ bản chip intel và amd 64 bit. Ngoài ra còn có các phiên bản cho chip arm hay các máy bé tí kiểu raspberry. cái đấy thì vào web docker nhé các bạn nhỏ.
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
RỒI TỚI ĐÂY LÀ XONG VIỆC KIỂM TRA VÀ LÀM NÊN CHO CÀI ĐẶT.
Update lại package do chúng ta mới add thêm ở trên sau đó cài bản docker-ce (vì bạn nghèo). Còn containerd là đại khái runtime tương tác quản lý với container, nó nằm giữa layer container và OS.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Test
sudo docker run hello-world
helloword chưa, rồi là xong rồi, máy bạn đã được cài docker.
Giờ thì để rảnh tay, chắc các bạn ít người muốn liên tục gõ sudo để truy cập docker đâu, mệt lắm. vì vậy chúng ta sẽ add user của bạn vào Group để control trực tiếp docker.
whoami #lấy tên user
sudo usermod -aG docker <user>
Sau đó bạn có thể gõ Docker không cần sudo. À nếu mà truy cập server qua SSH thì log lại nhá.
Rồi. Cài con redmine cho sếp.
docker run -p 8080:3000 -d --name some-redmine redmine
Chạy lệnh trên,
- Docker sẽ tìm image redmine (mặc định là ở dockerhub).
- Khởi chạy một container với name là some-redmine dùng thẻ –name để gán.
- Chạy container ngầm bằng thẻ -d
- Link port 8080 ở máy host với port 3000 của docker (vì container docker mở web cổng 3000).
Rồi kết quả.
Nếu các bạn chạy lệnh “docker ps” sẽ nhìn thấy thông tin container vừa khởi chạy.
XONGGGGG. Bài 1