Docker dùng để làm gì

      51

Bạn vẫn biết Docker là gì chưa? Và có biết tại sao nên sử dụng Docker hay không? Hãy cùng mình hưởng thụ qua nội dung bài viết này nhé.

Bạn đang xem: Docker dùng để làm gì

*


*

Khi bước đầu vào một dự án công trình mới, bạn thường làm những gì đầu tiên? tất yếu rồi buộc phải cài cắn một đống máy như PHP, MySQL, Redis, Elasticsearch… Lại kèm theo bao nhiêu là version, một tá thư viện vân vân với mây mây. Bùm, Docker sinh ra có thể giúp chúng ta tiết kiệm tương đối nhiều thời gian cho việc đó.

1. Docker là gì?

Docker là 1 trong nền tảng mang đến developers sysadmin để develop, deploy và run application với container. Nó được cho phép tạo các môi trường tự do và tách biệt để khởi chạy và trở nên tân tiến ứng dụng và môi trường thiên nhiên này được gọi là container. Khi buộc phải deploy lên bất kỳ server nào chỉ cần run container của Docker thì application của bạn sẽ được khởi chạy ngay lập tức lập tức.

2. Tại sao phải sử dụng Docker?

Một chút lan lan về quy mô máy nhà thông thường

Như hình ta có thể thấy một quy mô máy nhà thông thường bao hàm máy công ty vật lý + hệ điều hành + ứng dụng.

Chúng ta rất có thể nhận ra được ngay các khuyết điểm trước đôi mắt của khối hệ thống cũ như này đó là lãng mức giá tài nguyên:

Một máy chủ chỉ download được một OSCho dù có ổ cứng khủng, ram khủng thì cũng không tận dụng hết lợi thế.

Để tương khắc phục được một vài sự việc từ hệ thống cũ thì đã ra đời công nghệ ảo hóa virtualization. Có thể bạn đang nghe tới cái brand name Virtualbox hay VMware rồi đúng không, kia đó thiết yếu nó đó. Với technology này, trên một máy chủ vật lý mình có thể thiết lập được các OS, tận dụng tài nguyên đã xuất sắc hơn.

Hình minh hoạ

Nhưng lại nảy sinh thêm hai vấn đề tiếp

Về tài nguyên:

Khi chúng ta bật lắp thêm ảo trên VitualBox chẳng hạn, chúng ta cần thông số kỹ thuật để cung cấp ngay từ trên đầu tài nguyên ổ cứng và ram từ đồ vật thật cho máy ảo.Bật vật dụng ảo lên xong để đó không làm những gì thì thiết bị thật cũng cần thiết tái áp dụng tài nguyên đã mang lại đi.Ví dụ khi sinh sản một sản phẩm ảo ram 2GB trên sản phẩm công nghệ thật ram 6GB, lúc này máy thiệt sẽ chỉ còn tối nhiều 6 - 2 = 4 GB ram, tất cả khi máy ảo không cần sử dụng hết 2GB ram được cấp, đó là một trong sự lãng phí.

Về thời gian: vấn đề khởi động, tắt sản phẩm công nghệ ảo tương đối lâu, rất có thể lên tới hàng phút.

Ở bước tiến hóa tiếp theo, người ta sinh ra technology containerlization. Với technology này, trên một sever vật lý, ta sẽ thiết đặt được nhiều máy ảo (giống với công nghệ ảo hóa virtualization), nhưng giỏi hơn tại đoạn là các máy con này (Guess OS) rất nhiều dùng thông thường phần nhân của dòng sản phẩm mẹ (Host OS) và chia sẻ với nhau tài nguyên sản phẩm mẹ.

Hình minh hoạ.

Và bao hàm công ty cực kỳ lớn đã từng có lần áp dụng và thành công đó đó là GOOGLE. Với Google sử dụng rất nhiều, mình đã có lần được nghe 1 kỹ sư ở kia nói rằng:

Và công ty lớn như Google đã từng dùng thì vì sao ta không nên học để kiểm nghiệm chính là thứ magical nào nhỉ.

Tổng kết lại: việc setup deploy application lên một hoặc những server rất vất vả từ các việc phải thiết lập các công cụ, môi trường cần cho application đến việc chạy được ứng dụng chưa tính việc không đồng điệu giữa các môi trường xung quanh trên những server không giống nhau. Cũng chính vì lý cho nên Docker được ra đời để xử lý vấn đề này.

3. Công dụng của Docker là gì?

Không tự động ảo, Docker start stop chỉ vào vài giây.

Bạn có thể khởi chạy container bên trên mỗi hệ thống mà các bạn muốn.

Container có thể build và đào thải nhanh hơn sản phẩm ảo.

Dễ dàng tùy chỉnh thiết lập môi trường làm việc. Chỉ cần config 1 lần duy nhất và không khi nào phải setup lại các dependencies. Nếu bạn biến đổi máy hoặc có bạn mới thâm nhập vào project thì bạn chỉ cần lấy config đó và đưa cho họ.

Nó giữ mang lại word-space của người tiêu dùng sạch vẫn hơn khi bạn xóa môi trường thiên nhiên mà ảnh hưởng đến các phần khác.

4. Cài đặt Docker bên trên Linux

Chọn phiên bản cài đặt tương ứng với hệ điều hành của công ty và tiến hành cài đặt theo phía dẫn so với Linux còn Windows MacOS thì bạn chỉ cần tải bản cài về và thiết lập như các application khác.

Mình rất gần gũi dùng linux nên mình đã hướng dẫn thiết lập bằng linux

Bước 1: mở terminal nên

Bước 2: copy curl -sSL https://get.docker.com/ | sh cùng ấn enter.

Sau khi thiết đặt xong thì để khám nghiệm xem thiết lập thành công hay là không thì ta làm cho như sau.

Xem thêm: How To Easily Fix The " Server Ip Address Could Not Be Found "

Mở command line với gõ lệnh:



5. Một số khái niệm không giống của Docker

Dưới là hình hình ảnh mô hình hoạt động vui chơi của docker.

Docker Client: là biện pháp mà bạn can hệ với docker thông qua command trong terminal. Docker Client sẽ thực hiện API nhờ cất hộ lệnh cho tới Docker Daemon.Docker Daemon: là vps Docker cho yêu cầu từ Docker API. Nó thống trị images, containers, networks cùng volume.Docker Volumes: là cách tốt nhất có thể để tàng trữ dữ liệu tiếp tục cho việc sử dụng và chế tạo ra apps.Docker Registry: là nơi tàng trữ riêng của Docker Images. Images được push vào registry và client đã pull images trường đoản cú registry. Rất có thể sử dụng registry của riêng các bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure.Docker Hub: là Registry lớn số 1 của Docker Images ( mang định). Hoàn toàn có thể tìm thấy images và tàng trữ images của riêng bạn trên Docker Hub ( miễn phí).Docker Repository: là tập hợp các Docker Images thuộc tên dẫu vậy khác tags. VD: golang:1.11-alpine.Docker Networking: cho phép kết nối các container lại cùng với nhau. Kết nối này có thể trên 1 host hoặc các host.Docker Compose: là công cụ cho phép run app với rất nhiều Docker containers một cách dễ dàng hơn. Docker Compose có thể chấp nhận được bạn config những command trong tệp tin docker-compose.yml để sử dụng lại. Có sẵn khi download Docker.Docker Swarm: để phối kết hợp triển khai container.Docker Services: là các containers trong production. 1 service chỉ run 1 image tuy vậy nó mã hoá cách thức để run image — sử dụng port nào, bao nhiêu phiên bản sao container run để service tất cả hiệu năng cần thiết và tức thì lập tức.

6. Thử chạy một tiện ích React bởi Docker

Sau bao nhiêu lý thuyết rời rạc, cũng đã đến khi bắt tay vào thực hành thực tế thôi nhỉ. Bài xích này tôi cũng nói về kim chỉ nan khá nhiều nên mình test chạy 1 ứng dụng react của mình đã từng build nhỉ.

Command:


Mình lấy ip và kết quả là:

7. Các câu lệnh trong Docker thường xuyên dùng

Chuẩn chỉnh & khá đầy đủ nhất thì bạn cứ tham khảo trên docker docs. Còn ở bài viết này mình đang trích dẫn phần đông câu lệnh cơ phiên bản nhất giúp chúng ta nhanh chóng nắm bắt:

Pull một image tự Docker Hub


Tạo mới container bằng cách chạy image, kèm theo các tùy chọn:

Sử dụng lệnh Run để khởi chạy một image.


Lệnh này sẽ tự động hóa pull image ubuntu 16.04 về nếu trang bị tình của người sử dụng chưa có.

Sau khi bạn chạy lệnh này thì chúng ta đã tạo thành công xuất sắc một bé ubuntu 16.04 bởi docker rồi đấy.

Như bài xích trước tôi đã nói, docker cực kì nhẹ cũng chính vì nó dùng nhân kernel của sản phẩm chính, nên hiện nay mình thử kiểm tra xem nó bao gồm thực sự đúng hay không bằng câu lệnh sau:


Khi chúng ta chạy lệnh này ở trang bị ảo (container mà bạn vừa tạo ở trên) thì thu được kết quả như sau:

Linux 9c786d7d4900 5.4.0-1025-aws #25-Ubuntu SMP Fri Sep 11 09:37:24 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Đây là tin tức Kernel của sản phẩm ảo (tức là của container)

Khi bạn chạy ngơi nghỉ máy chính (máy thiệt mà bạn đang sử dụng để chế tạo ra container) thì thu được công dụng như sau.

Cả hai tác dụng đều có thông tin nhân Kernel như nhau nhé, vì container áp dụng chung khoáng sản với host OS mà.

Liệt kê các images hiện nay có:


Xóa một image:


Liệt kê những container vẫn chạy:


Liệt kê toàn bộ các container:


Vì bài xích này khá dài mình không đề cập build 1 tiện ích bằng docker step by step được. Mà lại mình hứa hẹn những bài xích sau sẽ giải thích kỹ hơn. Mong chúng ta đón phát âm kỳ sau.

Qua bài này, bản thân đã reviews đến các bạn về docker cũng như cách cài bỏ lên trên hệ quản lý điều hành Linux.