Docker là một công cụ cho phép bạn tạo, triển khai và quản lý các gói nhẹ, độc lập được gọi là container . Các container này có mã, thư viện, thời gian chạy, cài đặt hệ thống và các phụ thuộc cần thiết để chạy ứng dụng.

Hướng dẫn này hướng dẫn cài đặt Docker Engine trên nhiều bản phân phối Linux khác nhau bằng trình quản lý gói apt , bao gồm Ubuntu và Debian, cũng như cách tải và chạy hình ảnh Docker.

Trước khi bạn bắt đầu

1.Đảm bảo bạn có quyền truy cập dòng lệnh vào máy chủ Linux chạy bản phân phối Linux được hỗ trợ. Nếu không, hãy làm theo hướng dẫn Bắt đầu và Thiết lập và Bảo mật Phiên bản tính toán để tạo Linode mới.

Ghi chú: Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo. Nếu bạn không quen với sudolệnh này, hãy xem hướng dẫn Người dùng và Nhóm .

2.Xem lại các hướng dẫn về Docker sau đây để hiểu rõ hơn về Docker, các lợi ích của nó và thời điểm sử dụng nó.

Cài đặt Docker Engine trên Ubuntu và Debian

Docker Engine là phần mềm container hóa cơ bản được sử dụng khi triển khai container Docker. Các hướng dẫn sau đây sẽ cài đặt Docker Engine trên một trong những bản phát hành Ubuntu và Debian được hỗ trợ sau:

Các bản phân phối được hỗ trợ: Ubuntu 20.04, Ubuntu 18.04, Ubuntu 16.04, Debian 10, Debian 9. Các bản phát hành không phải LTS gần đây như Ubuntu 21.04, 20.10 và 21.10 cũng sẽ được hỗ trợ.

1.Đảm bảo Docker hiện không được cài đặt. Có thể bỏ qua thông báo cho biết không tìm thấy bất kỳ gói nào.

sudo apt remove docker docker-engine docker.io

2.Cài đặt các gói cần thiết để cấu hình kho lưu trữ của Docker:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Thêm khóa GPG của Docker. Trong lệnh sau, thay thế [url]bằng url tương ứng với bản phân phối mà hệ thống của bạn đang chạy.

curl -fsSL [url]/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • Ubuntu: https://download.docker.com/linux/ubuntu
  • Debian: https://download.docker.com/linux/debian

4.Thêm kho lưu trữ Docker ổn định , một lần nữa thay thế [url]bằng url tương ứng với bản phân phối mà hệ thống của bạn đang chạy.

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] [url] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5.Cài đặt Docker Engine và các gói cần thiết khác:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Bạn có thể tìm thấy hướng dẫn cài đặt bổ sung cho các bản phân phối này trong tài liệu của Docker:

Bắt đầu và kiểm tra Docker

Sau khi Docker Engine được cài đặt, hãy khởi động Docker và kiểm tra mọi thứ hoạt động bằng cách chạy một hình ảnh thử nghiệm.

1.Đảm bảo máy chủ Docker đang chạy.

sudo systemctl start docker

2.Tùy chọn cấu hình Docker để khởi động khi máy chủ khởi động. Điều này được khuyến nghị nếu bạn định chạy ứng dụng sản xuất trong cài đặt Docker này.

sudo systemctl enable docker
sudo systemctl enable containerd

3.Kiểm tra xem Docker đã được cài đặt đúng chưa bằng cách chạy hình ảnh “hello-world”.

sudo docker run hello-world

Nếu thành công, Docker sẽ tải xuống và chạy hình ảnh hello-world và đưa ra thông báo thành công. Trong số các văn bản khác, đầu ra sẽ bao gồm một thông báo tương tự như sau:

Hello from Docker!
This message shows that your installation appears to be working correctly

Sử dụng Docker với Người dùng không phải Root

Theo mặc định, sudocần chạy lệnh Docker, nhưng một nhóm mới, được gọi là docker , đã được tạo trong quá trình cài đặt. Khi daemon Docker khởi động, nó sẽ mở một socket Unix cho các thành viên nhóm docker .

Trước khi tiếp tục, hãy đảm bảo bạn có tài khoản người dùng giới hạn không thuộc nhóm sudo. Nếu bạn chưa tạo tài khoản người dùng giới hạn, hãy xem hướng dẫn Thiết lập và bảo mật phiên bản tính toán hoặc Người dùng và nhóm Linux để biết hướng dẫn.

1.Nhập lệnh bên dưới để thêm người dùng vào nhóm docker , thay thế [user] bằng tên tài khoản người dùng bị giới hạn của bạn.

sudo usermod -aG docker [user]

2.Đăng nhập vào hệ thống với tư cách là người dùng bị giới hạn.

3.Xác minh người dùng bị giới hạn có thể chạy dockerlệnh mà không sudocần chạy lại hình ảnh “hello-world”.

docker run hello-world

Đầu ra sẽ có thông báo thành công tương tự như đầu ra trước đó.

Quan trọng: Nhóm docker cấp các đặc quyền tương tự cho người dùng root. Xem hướng dẫn Docker Daemon Attack Surface trong tài liệu của Docker để biết thêm thông tin về cách điều đó có thể ảnh hưởng đến bảo mật hệ thống. Để chạy Docker daemon mà không sử dụng đặc quyền root, hãy làm theo hướng dẫn trong Chạy Docker daemon với tư cách là người dùng không phải root (chế độ Rootless) .

Giải quyết lỗi khi tải tệp cấu hình

Nếu người dùng đã chạy sudo dockerlệnh trước khi tham gia nhóm, họ có thể thấy lỗi khi tải tệp cấu hình, như thế này:

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

Vấn đề là thư mục .docker trong thư mục gốc của chúng (~/.docker) được tạo với quyền được cấp bởi sudo.

Có hai cách khắc phục có thể thực hiện:

  1. Xóa .dockerthư mục khỏi thư mục gốc của chúng. Docker sẽ tự động tạo lại thư mục đó, nhưng mọi cài đặt tùy chỉnh sẽ bị mất.
  2. Thay đổi quyền trên .dockerthư mục bằng lệnh:
sudo chown example_user:example_user /home/example_user/.docker -R
sudo chmod g+rwx "/home/example_user/.docker" -R

Sử dụng Docker Images để triển khai Container

Docker images là các mẫu bao gồm hướng dẫn và thông số kỹ thuật để tạo một container. Để sử dụng Docker, trước tiên bạn cần lấy một image hoặc tạo image của riêng mình bằng cách xây dựng một dockerfile. Để biết thêm thông tin, hãy xem Giới thiệu về Docker .

Liệt kê hình ảnh

Để liệt kê tất cả các hình ảnh trên hệ thống của bạn, hãy chạy lệnh sau. Lệnh này sẽ xuất ra hình ảnh hello-world đã được sử dụng ở bước trước đó, cũng như bất kỳ hình ảnh bổ sung nào bạn có thể đã có.

docker images

Tìm kiếm một hình ảnh

Hình ảnh được lưu trữ trên các sổ đăng ký Docker, chẳng hạn như Docker Hub (sổ đăng ký chính thức của Docker). Bạn có thể duyệt hình ảnh trên trang web đó hoặc sử dụng lệnh sau để tìm kiếm trong sổ đăng ký Docker. Trong lệnh sau, hãy thay thế [keyword]bằng các từ khóa bạn muốn tìm kiếm, chẳng hạn như nginx hoặc apache .

docker search [keyword]

Lấy một hình ảnh

Khi bạn tìm thấy hình ảnh, hãy tải xuống máy chủ của bạn. Trong lệnh sau, hãy thay thế [image]bằng tên hình ảnh bạn muốn sử dụng.

docker pull [image]

Ví dụ, để tải xuống hình ảnh nginx chính thức, hãy chạy: docker pull nginx.

Chạy một hình ảnh

Tiếp theo, tạo một container dựa trên hình ảnh bằng docker runlệnh. Một lần nữa, thay thế [image]bằng tên của hình ảnh bạn muốn sử dụng.

docker run [image]

Nếu hình ảnh chưa được tải xuống và có sẵn trong sổ đăng ký của Docker, hình ảnh sẽ tự động được kéo xuống máy chủ của bạn.

Quản lý Docker Container

Danh sách Container

Để liệt kê tất cả các container Docker đang hoạt động (và không hoạt động) trên hệ thống của bạn, hãy chạy lệnh sau:

docker ps -a

Đầu ra sẽ giống như sau. Đầu ra mẫu này hiển thị hello-worldcontainer.

CONTAINER ID   IMAGE         COMMAND    CREATED       STATUS                   PORTS     NAMES
5039168328a5   hello-world   "/hello"   2 hours ago   Exited (0) 2 hours ago             magical_varahamihira

Bắt đầu một Container

Khởi động một container Docker bằng lệnh sau, thay thế [ID]ID container bằng ID của container tương ứng với container mà bạn muốn khởi động:

docker start [ID]

Dừng một Container

Dừng một container Docker bằng lệnh sau, thay thế [ID]ID container bằng ID của container tương ứng với container mà bạn muốn dừng:

docker stop [ID]

Một số hình ảnh (như hello-worldhình ảnh) tự động dừng sau khi chạy. Tuy nhiên, nhiều container khác vẫn tiếp tục chạy cho đến khi được lệnh dừng rõ ràng và bạn có thể muốn chạy các container này ở chế độ nền. Đối với những trường hợp đó, lệnh này có thể hữu ích.

Xóa một Container

Xóa một container Docker bằng lệnh sau, thay thế [ID]bằng ID container tương ứng với container mà bạn muốn xóa:

docker rm [ID]

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.

Nguồn: https://www.linode.com/docs/guides/installing-and-using-docker-on-ubuntu-and-debian/#more-information