Nội dung bài viết
#

Hướng dẫn cài đặt & Sử dụng Docker trên Ubuntu 18.04

Nội dung bài viết

    Docker là ứng dụng chuyên đơn giản quá quy trình quản lý các ứng dụng trong containers. Containers là nơi cho phép các ứng dụng hoạt động cách ly với tài nguyên. Nó hoạt động như một máy ảo nhưng linh hoạt và thân thiện với tài nguyên hơn đồng thời nó còn phụ thuộc vào hệ điều hành của máy chủ.

    Bài viết sau đây BKHOST sẽ cùng bạn tìm hiểu cách cài đặt và sử dụng Docker Community Edition (CE) trên hệ điều hành Ubuntu 18.04. Bạn sẽ học được cách tự cài Docker, làm việc với containers, kho lưu trữ của Docker.

    Điều kiện cài đặt

    Bạn cần có những điều kiện sau trước khi làm theo hướng dẫn bên dưới:

    • Thiết lập sẵn một máy chủ Ubuntu 18.04 với người dùng không phải root sudoFirewall.
    • Tạo một tài khoản của Docker Hub nếu bạn muốn thực hiện bước 7 bà 8 trong hướng dẫn.

    Hướng dẫn cài đặt

    Cai dat Docker tren ubuntu

    Dưới đây là 8 bước cách cài đặt và sử dụng Docker trên Ubuntu 18.04

    Bước 1 – Cài đặt Docker

    Trong kho lưu trữ chính thức của Ubuntu có cung cấp sẵn những gói Docker, tuy nhiên có thể đó không phải là các gói mới nhất. Để đảm bảo bạn đang tải xuống các gói Docker không bị lỗi thời, hãy tải xuống từ kho lưu trữ chính thức của Docker. Các gói mới của Docker sẽ thêm key GPG để đảm bảo gói tải xuống là mới nhất và hợp lệ.

    • Đầu tiên, bạn cần cập nhật các gói hiện tại của bạn bằng lệnh:
    {{EJS0}}
    • Thiết lập các gói theo yêu cầu ở điều kiện tiên quyết để apt có thể sử dụng các gói từ HTTPS:
    {{EJS1}}
    • Thêm các key GPG ở kho lưu trữ chính thức của Docker trong hệ thống của bạn:
    {{EJS2}}
    • Thêm kho lưu trữ Docker vào các nguồn apt:
    {{EJS3}}
    • Cập nhật cơ sở dữ liệu các gói Docker được thêm từ repo:
    {{EJS4}}
    • Đảm bảo bạn cài đặt Docker từ kho lưu trữ của Docker, không phải Ubuntu:
    {{EJS5}}
    • Đây là kết quả đầu ra của Docker: apt-cache policy docker-ce
    {{EJS6}}

    Tại đây dù docker-ce chưa được cài đặt, nhưng nó sẽ được cài đặt từ kho lưu trữ Docker cho Ubuntu 18.04

    • Tại đây, bắt đầu cài đặt Docker:
    {{EJS7}}

    Quá trình kích hoạt khởi động bắt đầu, bạn có thể kiểm tra xem nó có đang chạy hay không:

    {{EJS8}}
    • Nếu nó đang chạy, đầu ra sẽ có kết quả như sau:
    {{EJS9}}

    Docker mà bạn đang cài đặt ngoài cung cấp cho bạn một dịch vụ Docker đơn thuần, nó còn mang đến cho bạn các tiện ích về dòng lệnh hay các ứng dụng khách Docker.

    Sau đây, chúng ta hãy bắt đầu khám phá về dòng lệnh Docker.

    Bước 2 – Thực thi lệnh Docker mà không cần sudo

    Để chạy được lệnh Docker yêu cầu bạn phải được cấp quyền root hoặc là thành viên trong nhóm docker, nhóm người dùng này được tạo tự động trong quá trình cài đặt Docker. Nếu bạn không nằm trong nhóm người dùng trên thì khi chạy lệnh Docker bạn sẽ nhận được phản hồi như sau:

    {{EJS10}}
    • Nếu bạn không muốn dùng sudo trong những lần chạy lệnh docker, bạn có thể thêm tên người dùng vào nhóm docker:
    {{EJS11}}
    • Để chạy lệnh với tư cách là thành viên nhóm mới, bạn có thể đăng xuất sau đó đăng nhập lại máy chủ hoặc dùng lệnh sau:
    {{EJS12}}

    Nhập mật khẩu của bạn sau đó tiếp tục quá trình.

    • Để xác nhận thêm người dùng mới vào nhóm docker, bạn dùng lệnh sau:
    {{EJS13}}
    {{EJS14}}
    • Bạn có thể khai báo tên người dùng mới để thêm vào nhóm docker bằng lệnh sau thay vì đăng nhập:
    {{EJS15}}

    Các lệnh docker trong phần tiếp theo sẽ chạy với tư cách là người trong nhóm docker, nếu bạn không phải thì thêm sudo vào trước các câu lệnh.

    Sau đây là các lệnh Docker.

    Bước 3 – Sử dụng lệnh Docker

    • Câu lệnh docker sẽ bao gồm các tùy chọn, câu lệnh và đối số, cú pháp của nó như sau:
    {{EJS16}}
    • Dùng lệnh sau để liệt kê các lệnh con có sẵn:
    {{EJS17}}
    • Danh sách lệnh con đầy đủ của Docker bao gồm:
    LệnhÝ nghĩa
    attachĐính kèm luồng đầu vào, đầu ra và lỗi tiêu chuẩn cục bộ cho chương trình đang chạy
    buildThiết lập hình ảnh từ Dockerfile
    commitXây dựng hình ảnh mới từ thay đổi vùng chứa
    cpSao chép tệp / thư mục giữa vùng chứa và hệ thống tệp cục bộ
    createTạo mới vùng chứa
    diffKiểm tra các thay đổi về tệp/ thư mục ở vùng chứa
    eventsNhận các sự kiện thời gian thực từ máy chủ
    execChạy lệnh trong vùng chứa đang chạy
    exportXuất tệp của vùng chứa ở dạng tar
    historyLịch sử hiển thị hình ảnh
    imagesDanh sách hình ảnh
    importNhập nội dung từ tarball để tạo hình ảnh hệ thống tệp
    infoHiển thị thông tin toàn hệ thống
    inspectTrả lại thông tin của Docker ở cấp thấp
    killTắt một hoặc nhiều vùng chứa đang hoạt động
    loadTải hình ảnh từ tar hoặc STDIN
    loginĐăng nhập vào Docker
    logoutĐăng xuất khỏi Docker
    logsTìm nạp nhật ký của một vùng chứa
    pauseTạm dừng tất cả các quy trình đang hoạt động trong vùng chứa
    portLiệt kê các ánh xạ cổng hoặc một ánh xạ cụ thể cho vùng chứa
    psLiệt kê danh sách vùng chứa
    pullKéo hình ảnh hoặc kho lưu trữ từ sổ đăng ký
    pushĐẩy hình ảnh hoặc kho lưu trữ vào sổ đăng ký
    renameĐổi tên vùng chứa
    restartKhởi động lại một hoặc nhiều vùng chứa
    rmXóa một hoặc nhiều vùng chứa
    rmiXóa một hoặc nhiều hình ảnh
    saveLưu một hoặc nhiều hình ảnh vào kho lưu trữ tar ( mặc định sẽ truyền trực tuyến đến STDOUT)
    searchTìm hình ảnh trong DockerHub
    startBắt đầu một hoặc nhiều vùng chứa đã ngừng hoạt động
    statsThống kê các luồng sử dụng tài nguyên của vùng chứa
    stopDừng một hoặc nhiều vùng chứa đang hoạt động
    tagTạo thẻ TARGET_IMAGE gắn thẻ SOURCE_IMAGE
    topHiển thị quy trình đang chạy của vùng chứa
    unpauseHủy tạm dừng tất cả các quy trình trong một hoặc nhiều vùng chứa
    updateCập nhật cấu hình của một hoặc nhiều vùng chứa
    versionHiển thị thông tin phiên bản Docker
    waitChặn cho đến khi một hoặc nhiều vùng chứa dừng lại, sau đó in ra lệnh thoát của nó
    • Cách xem các tùy chọn có sẵn trong một lệnh con như sau:
    {{EJS18}}
    • Đây là cách xem thông tin hệ thống của Docker:
    {{EJS19}}

    Chúng ta hãy cùng khám phá một số lệnh này bằng cách làm việc với docker qua hình ảnh.

    Bước 4 – Làm việc với Docker Images

    Docker Images là thành phần tạo nên các containers của Docker. Những hình ảnh này được chuyển qua từ Docker Hub, đây là công ty phát hành ra sản phẩm Docker. Việc lưu trữ hình ảnh Docker trên Docker Hub là không giới hạn người dùng, do đó các ứng dụng hay bản phân phối Linux đều có hình ảnh được lưu trữ tại đây.

    • Cách kiểm tra xem bạn có thể truy cập và tải hình ảnh của Docker hay không:
    {{EJS20}}
    • Nếu Docker đang hoạt động, sẽ cho phản hồi như sau:
    {{EJS21}}

    Lúc này Docker không tìm thấy hình ảnh hello-word được lưu cục bộ nên nó đã tải hình ảnh từ Docker Hub sau đó hình ảnh được lưu tại containers của Docker. Lúc này các ứng dụng trong containers được thực thì và hiển thị thông báo như phản hồi trên.

    Để tìm một hình ảnh có sẵn trên Docker Hub, bạn có thể dùng lệnh con của docker là search. Trong câu lệnh dưới đây, giải sử chúng ta đang tìm hình ảnh Ubuntu:

    {{EJS22}}

    Docker Hub sẽ trả về danh sách các hình ảnh có tên chứa ký tự được tìm kiếm. Ví dụ sau đây là phản hồi từ câu lệnh trên:

    {{EJS23}}
    {{EJS24}}

    Tại cột Official/ OK là hình ảnh được hỗ trợ phát triển từ Docker Hub. Để tải xuống hình ảnh mà bạn đã chọn, hãy dùng lệnh con là pull:

    • Câu lệnh tải tệp Ubuntu về máy tính như sau:
    {{EJS25}}
    • Bạn sẽ nhận được kết quả:
    {{EJS26}}

    Để khởi chạy containers bằng hình ảnh vừa tải xuống, bạn dùng lệnh run. Như ở ví dụ về hình ảnh Hello-word bạn có thể thấy, nếu chạy lệnh run khi hình ảnh chưa được tải xuống thì trước tiên ứng dụng khách của Docker phải tải ảnh xuống và sử dụng nó để tạo containers.

    • Lệnh sau dùng để liệt kê các ảnh đã tải xuống:
    {{EJS27}}
    • Và đây là kết quả:
    {{EJS28}}
    {{EJS29}}

    Ở các phần sau, hình ảnh mà bạn dùng để tạo containers có thể sẽ được thay đổi và được dùng để tạo hình ảnh mới, sau đó sẽ được đẩy lên Docker Hub hoặc Docker.

    Tiếp theo là các chạy containers một cách chi tiết.

    Bước 5 – Chạy Docker Container

    Ở ví dụ về containers, hello-word bạn đã biết được việc containers chạy và thoát sau khi nhận thông báo kiểm tra. Trên thực thế các containers có rất nhiều lợi ích, nó hoạt động tương tự như máy ảo và thân thiện với tài nguyên hơn.

    • Câu lệnh dưới đây là giả sử dụng hình ảnh Ubuntu để chạy containers. Để có quyền truy cập vào shell tương tác containers bạn dùng thêm -i-t:
    {{EJS30}}
    • Dấu nhắc lệnh của bạn sẽ thay đổi để phản ánh thực tế là bạn hiện đang làm việc bên trong containers và sẽ có dạng sau:
    {{EJS31}}

    Hãy ghi nhớ id containers trong dấu nhắc lệnh, để về sau khi bạn muốn xóa containers bạn sẽ cần id này. Trong ví dụ trên id sẽ là d9b100f2f636.

    Bây giờ bạn có thể chạy bất kỳ lệnh nào bên trong containers. Ví dụ: hãy cập nhật cơ sở dữ liệu gói bên trong containers. Bạn không cần đặt trước bất kỳ lệnh nào sudo, bởi vì bạn đang hoạt động bên trong containers với tư cách là người dùng gốc:

    Bây giờ bạn có thể thực thi các lệnh bất kỳ trong containers. Bạn không cần thêm lệnh sudo vào các câu lệnh vì lúc này bạn đang hoạt động với tư cách là root.

    • Lệnh cập nhật cơ sở dữ liệu trong containers:
    {{EJS32}}
    • Lệnh cài đặt ứng dụng trong Node.js:
    {{EJS33}}
    • Khi thực thi câu lệnh trên, Node.js sẽ được cài đặt vào kho lưu trữ chính thức của Ubuntu. Để xác mình xem Node.js đã cài đặt hoàn tất hay chưa, bạn dùng lệnh:
    {{EJS34}}
    • Nếu đã được cài đặt, phản hồi sẽ cho thấy số phiên bản được cài đặt vào thiết bị đầu cuối của bạn:
    {{EJS35}}

    Bạn thực hiện bên trong containers nào thì những thay đổi chỉ xảy ra bên trong containers đó.

    • Nhập lệnh exit để thoát khỏi containers

    Tiếp đến là cách quản lý các containers của Docker

    Bước 6 – Quản lý Docker Containers

    • Sau thời gian dài sử dụng, số lượng containers trong Docker sẽ tăng lên và có cái đang chạy có cái không. Để kiểm tra xem các vùng chức đang hoạt động, bạn dùng lệnh sau:
    {{EJS36}}
    • Danh sách containers đang hoạt động:
    {{EJS37}}

    Chúng ta đã đề cập 2 containers trong hướng dẫn là hello-wordubuntu. Tuy nó không còn hoạt động nhưng vẫn tồn tại trong hệ thống.

    • Để liệt kê các containers ở tất cả các trạng thái, bạn dùng lệnh sau:
    {{EJS38}}
    • Kết quả:
    {{EJS39}}
    • Lệnh này dùng để xem containers mới nhất:
    {{EJS40}}
    {{EJS41}}
    • Để khởi động một containers đã dừng trước đó, hãy dùng lệnh startid hoặc tên containers, trong ví dụ này sẽ áp dụng cho Ubuntu bằng id của nó:
    {{EJS42}}
    • Lúc này containers đã hoạt động trở lại, bạn có thể dùng ps để kiểm tra trạng thái:
    {{EJS43}}
    • Ngược lại, để dừng containers đang hoạt động bạn dùng lệnh stop cùng với id hoặc tên containers. Trong ví dụ này sẽ dùng containers với tên là sharp_volhard
    {{EJS44}}
    • Để xóa containers không dùng đến bạn dùng lệnh rm cùng với id hoặc tên của nó. Ví dụ:
    {{EJS45}}

    Bạn có thể dùng lệnh – để tạo containers mới hoặc dùng –rm để chuyển thành containers mới khi nó ngừng hoạt động. Để xem thông tin chi tiết về các lệnh khác bạn dùng docker run help.

    Sau đây là cách chuyển containers thành hình ảnh để tạo containers mới.

    Bước 7 – Cam kết các thay đổi trong containers thành Docker Image

    Với hình ảnh của Docker, bạn có thể thực hiện các thao tác thêm, xóa, sửa tệp như máy ảo, những thay đổi này chỉ xảy ra trong containers đó, nhưng khi bạn chặn hoặc xóa containers bằng lệnh rm thì các thay đổi sẽ không còn.

    Dưới đây là cách để lưu trạng thái containers ở dạng hình ảnh.

    Ở các bước trước đó bạn đã cài Node.js vào containers của Ubuntu, lúc này bạn có thể chạy containers trên một hình ảnh, nhưng nó lại khác với hình ảnh mà bạn đã tạo ban đầu. Và bạn muốn dùng hình ảnh containers Node.js lúc đầu để làm cơ sở cho các hình ảnh sau này.

    • Bạn có thể cam kết các thay đổi của phiên bản hình ảnh bằng lệnh:
    {{EJS46}}

    Với lệnh -m sẽ thể hiện cho bạn biết những thay đổi đã được thực hiện và -a dùng để liệt kê những ai đã thay đổi, container_idid containers, reposity là tên người dùng Docker Hub mà bạn đã tạo.

    Ví dụ:

    {{EJS47}}

    Khi bạn chạy câu lệnh trên, sẽ có một ảnh mới được lưu trên máy tính cục bộ của bạn. Ở bước 8 bạn sẽ học được cách đẩy ảnh vào kho lưu trữ của Docker Hub để người khác có thể truy cập được.

    • Liệt kê các hình ảnh mới của Docker:
    {{EJS48}}
    • Phản hồi như sau:
    {{EJS49}}

    Từ kết quả ta có thể thấy, hình ảnh ubuntu-nodejs là mới nhất, nó được triển khai từ hình ảnh ubuntu của Docker Hub. Nhìn vào kích thước bạn có thể thấy sự khác biệt so với hình ảnh Ubuntu lúc đầu là đã được cài thêm Nodejs. Do đó, nếu bạn muốn sử dụng containers có cài Nodejs thì bạn có thể dùng hình ảnh này.

    Tiếp theo là cách để có thể chia sẻ containers cho người dùng khác

    Bước 8 – Đẩy Docker Images vào kho lưu trữ Docker

    Để có thể tạo hình ảnh mới từ một hình ảnh cơ sở ban đầu, bạn có thể chia sẻ nó cho bạn bè, người dùng Docker Hub, … Để làm điều này bạn cần đẩy hình ảnh lên Docker Hub hoặc cơ quan đăng ký Docker bất kỳ khác. Việc này yêu cầu bạn phải có tài khoản.

    Ở đây chúng tôi sẽ hướng dẫn bạn đẩy hình ảnh vào Docker Hub.

    • Đầu tiên, cần đăng nhập vào Docker Hub:
    {{EJS50}}
    • Bạn cần nhập chính xác mật khẩu Docker Hub của mình.

    Lưu ý: Nếu tên người dùng Docker của bạn khác với tên người dùng mà bạn tạo hình ảnh. Thì bạn cần gắn hình ảnh của mình bằng tên người dùng Docker.

    Bạn sẽ nhập nó ở bước cuối cùng của ví dụ:

    {{EJS51}}
    • Tiếp theo, dùng lệnh sau để đẩy hình ảnh:
    {{EJS52}}
    • Lệnh sau dùng để đảnh hình ảnh ubuntu-nodejs vào sammy:
    {{EJS53}}
    • Sẽ mất vài phút để tải ảnh lên, sau khi hoàn tất kết quả sẽ như sau:
    {{EJS54}}
    • Sau khi hình ảnh được đẩy thành công, nó sẽ được hiển thị trong tài khoản của bạn như hình minh họa:

    Cai dat thanh cong docker

    • Nếu trong quá trình đẩy hình ảnh bạn gặp lỗi này, nguyên nhân có thể do bạn không đăng nhập:
    {{EJS55}}
    • Hãy dùng lệnh docker login sau đó thực hiện lại quá trình đẩy.
    • Sau khi hoàn tất thì kiểm tra xem hình ảnh đã được đẩy lên Docker Hub của bạn hay chưa.
    • Lúc này hãy thử kéo hình ảnh sang thiết bị mới và bắt đầu tạo một containers mới từ nó bằng lệnh docker pull sammy/ubuntu-nodejs

    Tổng kết về cách cài đặt và sử dụng Docker

    Hướng dẫn trên đã giúp bạn cài đặt Docker, cách làm việc với hình ảnh và containers của nó, đồng thời cũng biết cách sửa đổi containers bằng cách đẩy ảnh lên Docker Hub. Hy vọng bài viết mang đến có các bạn một trải nghiệm hữu ích.

    Nếu bạn bất cứ câu hỏi nào liên quan đến cách cài đặt và sử dụng Docker, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

    P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

    Mua Hosting tại BKHOST

    Khuyến mãi giảm giá cực sâu, chỉ từ 5k/tháng. Đăng ký ngay hôm nay:

    web hosting

    Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
    Bình luận
    Trượt lên đầu trang
    Miễn phí cước gọi
    Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
    Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !