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 YUM hoặc DNF , bao gồm CentOS và Fedora, 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

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 trên CentOS và Fedora bằng trình quản lý gói YUM .

Các bản phân phối được hỗ trợ: CentOS 7, CentOS 8 (bao gồm các bản phái sinh khác của RHEL 8 như AlmaLinux và RockyLinux) và Fedora 32 (và các phiên bản mới hơn)Ghi chúTrong khi trình quản lý gói 

YUM đã được thay thế bằng 

DNF trên CentOS 8 và Fedora, 

yumlệnh vẫn có mặt dưới dạng liên kết tượng trưng đến DNF. Do đó, các hướng dẫn này vẫn hoạt động như mong đợi.

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 yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2.Cài đặt gói yum-utils , bao gồm yum-config-manager. Gói này sẽ tự động cài đặt dnf-plugins-corekhi sử dụng DNF.

sudo yum install yum-utils

3.Thêm kho lưu trữ docker, sử dụng yum-config-manager. Điều này tự động ánh xạ đến dnf config-managerlệnh khi sử dụng DNF. Trong lệnh sau, thay thế [url]bằng url của kho lưu trữ cho bản phân phối của bạn:

sudo yum-config-manager --add-repo [url]
  • RHEL/CentOS và các phiên bản phái sinh: https://download.docker.com/linux/centos/docker-ce.repo
  • Fedora 32 trở lên: https://download.docker.com/linux/fedora/docker-ce.repo

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

sudo yum install docker-ce docker-ce-cli containerd.io
  1. Trong bước này, bạn có thể được nhắc chấp nhận khóa GPG. Dấu vân tay phải là 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35. Xác minh các chi tiết này và nhập y để chấp nhận.

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
  1. 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.

Quản lý 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-centos-and-fedora/