- Tổng đài 24/7: 1800 646 881
- Đăng nhập
- 3
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.
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:
Dưới đây là 8 bước cách cài đặt và sử dụng Docker trên Ubuntu 18.04
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ệ.
{{EJS0}}
apt
có thể sử dụng các gói từ HTTPS:{{EJS1}}
{{EJS2}}
{{EJS3}}
{{EJS4}}
{{EJS5}}
{{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
{{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}}
{{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.
Để 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}}
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}}
{{EJS12}}
Nhập mật khẩu của bạn sau đó tiếp tục quá trình.
{{EJS13}}
{{EJS14}}
{{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.
{{EJS16}}
{{EJS17}}
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 |
build | Thiết lập hình ảnh từ Dockerfile |
commit | Xây dựng hình ảnh mới từ thay đổi vùng chứa |
cp | Sao chép tệp / thư mục giữa vùng chứa và hệ thống tệp cục bộ |
create | Tạo mới vùng chứa |
diff | Kiểm tra các thay đổi về tệp/ thư mục ở vùng chứa |
events | Nhận các sự kiện thời gian thực từ máy chủ |
exec | Chạy lệnh trong vùng chứa đang chạy |
export | Xuất tệp của vùng chứa ở dạng tar |
history | Lịch sử hiển thị hình ảnh |
images | Danh sách hình ảnh |
import | Nhập nội dung từ tarball để tạo hình ảnh hệ thống tệp |
info | Hiển thị thông tin toàn hệ thống |
inspect | Trả lại thông tin của Docker ở cấp thấp |
kill | Tắt một hoặc nhiều vùng chứa đang hoạt động |
load | Tải hình ảnh từ tar hoặc STDIN |
login | Đăng nhập vào Docker |
logout | Đăng xuất khỏi Docker |
logs | Tìm nạp nhật ký của một vùng chứa |
pause | Tạm dừng tất cả các quy trình đang hoạt động trong vùng chứa |
port | Liệt kê các ánh xạ cổng hoặc một ánh xạ cụ thể cho vùng chứa |
ps | Liệt kê danh sách vùng chứa |
pull | Ké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 |
restart | Khởi động lại một hoặc nhiều vùng chứa |
rm | Xóa một hoặc nhiều vùng chứa |
rmi | Xóa một hoặc nhiều hình ảnh |
save | Lư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) |
search | Tìm hình ảnh trong DockerHub |
start | Bắt đầu một hoặc nhiều vùng chứa đã ngừng hoạt động |
stats | Thống kê các luồng sử dụng tài nguyên của vùng chứa |
stop | Dừng một hoặc nhiều vùng chứa đang hoạt động |
tag | Tạo thẻ TARGET_IMAGE gắn thẻ SOURCE_IMAGE |
top | Hiển thị quy trình đang chạy của vùng chứa |
unpause | Hủy tạm dừng tất cả các quy trình trong một hoặc nhiều vùng chứa |
update | Cập nhật cấu hình của một hoặc nhiều vùng chứa |
version | Hiển thị thông tin phiên bản Docker |
wait | Chặ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ó |
{{EJS18}}
{{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.
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.
{{EJS20}}
{{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:
{{EJS25}}
{{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.
{{EJS27}}
{{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.
Ở 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.
-i
và -t
:{{EJS30}}
{{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
.
{{EJS32}}
{{EJS33}}
{{EJS34}}
{{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 đó.
exit
để thoát khỏi containersTiếp đến là cách quản lý các containers của Docker
{{EJS36}}
{{EJS37}}
Chúng ta đã đề cập 2 containers trong hướng dẫn là hello-word
và ubuntu
. Tuy nó không còn hoạt động nhưng vẫn tồn tại trong hệ thống.
{{EJS38}}
{{EJS39}}
{{EJS40}}
{{EJS41}}
start
và id
hoặc tên containers, trong ví dụ này sẽ áp dụng cho Ubuntu bằng id của nó:{{EJS42}}
ps
để kiểm tra trạng thái:{{EJS43}}
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}}
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.
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.
{{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_id
là id 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.
{{EJS48}}
{{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
Để 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.
{{EJS50}}
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}}
{{EJS52}}
{{EJS53}}
{{EJS54}}
{{EJS55}}
docker login
sau đó thực hiện lại quá trình đẩy.docker pull sammy/ubuntu-nodejs
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.
Dịch vụ Server Riêng BKHOST
Giảm giá cực sâu, chất lượng hàng đầu. Đăng ký ngay hôm nay: