Docker là một dự án mã nguồn mở cung cấp nền tảng mở cho các nhà phát triển và quản trị viên hệ thống để xây dựng, đóng gói và chạy ứng dụng ở bất kỳ đâu dưới dạng một vùng chứa nhẹ. Docker tự động triển khai các ứng dụng bên trong vùng chứa phần mềm. Quá trình phát triển Docker được Solomon Hykes bắt đầu như một dự án nội bộ tại dotCloud, một PaaS (nền tảng dưới dạng dịch vụ) dành cho doanh nghiệp, nhưng phần mềm hiện được cộng đồng docker và Docker Inc. bảo trì. Bạn có thể tìm hiểu thêm về Docker trong tài liệu tại đây https://docs.docker.com/.
Docker yêu cầu kiến trúc 64 bit để cài đặt và Linux Kernel phải là 3.10 trở lên. Tôi sẽ sử dụng Ubuntu Linux ở đây.
Sau đó chạy uname -a để kiểm tra phiên bản của hạt nhân Linux hiện đang chạy.
Bạn có thể thấy rằng tôi đang sử dụng phiên bản hạt nhân 4.15.0 với Hạt nhân 64Bit (x86_64).
Để kiểm tra phiên bản Ubuntu, hãy chạy:
Lệnh này cho thấy phiên bản Ubuntu là 18.04.
Bạn nên cập nhật Ubuntu trước khi cài đặt phần mềm mới. Chạy lệnh sau để tải các bản cập nhật mới nhất từ kho lưu trữ Ubuntu và cài đặt chúng.
Bây giờ chúng ta đã sẵn sàng cài đặt Docker trên máy chủ.
Để cài đặt Docker, chúng ta có thể sử dụng các gói từ 'Kho lưu trữ Ubuntu' hoặc sử dụng các gói từ 'Kho lưu trữ Docker'.
Chờ cho đến khi quá trình cài đặt hoàn tất, sau đó bạn có thể khởi động Docker và thêm nó vào thời gian khởi động bằng lệnh systemctl:
Bạn cũng có thể muốn kiểm tra docker version:
Và bạn sẽ cài đặt docker 17.12 từ Ubuntu Repository.
Khi quá trình cài đặt hoàn tất, hãy thêm khóa docker và kho lưu trữ docker 'nightly'.
và cập nhật kho lưu trữ.
Bây giờ kho lưu trữ docker đã được thêm vào hệ thống.
Kiểm tra tất cả các gói docker do kho lưu trữ docker cung cấp bằng lệnh apt-cache.
Và bạn sẽ thấy các phiên bản docker khác nhau như bên dưới.
Cài đặt bằng lệnh apt bên dưới.
Khi quá trình cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Bây giờ hãy kiểm tra phiên bản docker đã cài đặt trên hệ thống.
Và bạn sẽ thấy docker 18.x đã cài đặt trên hệ thống. Bây giờ bạn có thể bắt đầu tạo một container bằng cách tải xuống Docker Image từ Docker Registry.
Thêm người dùng 'hakase'.
Thêm 'hakase' use vào nhóm 'docker'.
Bây giờ hãy đăng nhập với tư cách là người dùng 'hakase' và chạy lệnh docker.
Và bạn sẽ nhận được hello world từ docker.
Để tạo một container mới, bạn nên bắt đầu bằng cách chọn một hình ảnh cơ sở với hệ điều hành, ví dụ như ubuntu hoặc centos hoặc một hệ điều hành khác. Bạn có thể tìm kiếm một hình ảnh cơ sở bằng lệnh docker search:
Lệnh này sẽ hiển thị cho bạn tất cả các hình ảnh ubuntu. Bạn có thể tự mình thử docker search centos v.v.
Bây giờ là lúc tải xuống hình ảnh cơ sở về máy chủ của chúng ta, hãy sử dụng lệnh:
Lệnh docker pull image-name sẽ tải xuống hình ảnh về máy chủ của bạn từ docker registry/DockerHub.
Bây giờ bạn có thể xem tất cả hình ảnh đã tải xuống bằng cách sử dụng lệnh:
Hình ảnh Ubuntu đã được tải xuống từ DockerHub/Docker Registry. Bước tiếp theo là tạo một container từ image đó.
Để tạo container, bạn có thể sử dụng docker create hoặc docker run.
lệnh docker create sẽ tạo một container mới nhưng không khởi động nó. Vì vậy, bây giờ bạn có thể sử dụng lệnh run:
Lệnh này sẽ tạo và chạy một container dựa trên image ubuntu 18.04 và chạy lệnh /bin/bash bên trong container, bạn sẽ tự động vào bên trong container sau khi chạy lệnh.
Container sẽ dừng khi bạn thoát khỏi nó bằng lệnh exit. Nếu bạn muốn có một container chạy ở chế độ nền, bạn chỉ cần thêm tùy chọn -d vào lệnh.
Lưu ý:
/bin/sh -c "while true; do echo hello world; sleep 1; done" đây là tập lệnh bash để echo "hello word" mãi mãi.
Bây giờ bạn có thể thấy container chạy ở chế độ nền bằng cách sử dụng lệnh sau:
hoặc nếu bạn muốn xem kết quả nhật ký từ lệnh bash đó, bạn có thể sử dụng lệnh:
Làm thế nào để tôi có thể truy cập shell của container chạy ở chế độ nền chế độ?
Lệnh này sẽ kết nối bạn với shell của container:
Nhập một container Docker đang chạy.
Bạn có thể thấy tên máy chủ và ID container bằng nhau, điều này có nghĩa là bạn đang ở bên trong shell container. Khi bạn nhập `exit` trên shell đó, bạn sẽ thoát khỏi shell đó nhưng container vẫn đang chạy.
Một lệnh khác mà bạn sẽ thường sử dụng là:
Lệnh này sẽ dừng container mà không xóa nó, do đó bạn có thể khởi động lại bằng lệnh:
Nếu bạn muốn xóa container, hãy dừng nó trước rồi xóa bằng lệnh:
Đây chỉ là phần giới thiệu ngắn gọn về cách cài đặt và sử dụng Docker cơ bản trên Ubuntu, bạn có thể tìm trang tài liệu Docker chi tiết tại đây.
Phần giới thiệu chuyên sâu về Docker có trong loạt bài hướng dẫn Howtoforge này: https://www.howtoforge.com/tutorial/how-to-use-docker-introduction/
Docker yêu cầu kiến trúc 64 bit để cài đặt và Linux Kernel phải là 3.10 trở lên. Tôi sẽ sử dụng Ubuntu Linux ở đây.
Những điều cần biết về Docker
Sau đây là các thuật ngữ cơ bản trong thế giới docker mà bạn nên biết.Hình ảnh Docker
Hình ảnh Docker là mẫu cơ bản cho vùng chứa Docker. Một hình ảnh thường chứa hệ điều hành và các ứng dụng được cài đặt sẵn. Hình ảnh Docker được sử dụng để chạy container, bạn có thể tìm thấy nhiều hình ảnh với nhiều hệ điều hành và phần mềm khác nhau đã được cài đặt trong Docker Hub https://hub.docker.com/. Bạn cũng có thể tạo hình ảnh Docker của riêng mình bằng Dockerfile.Docker Container
Docker Container là một hình ảnh có thể đọc và ghi vào chạy trên hình ảnh Docker. Docker đang sử dụng union-file-system làm phụ trợ cho container; bất kỳ thay đổi nào được thực hiện trong container sẽ được lưu trong một lớp mới phía trên ảnh cơ sở. Container là lớp nơi chúng ta cài đặt các ứng dụng. Mỗi container chạy riêng biệt trong máy chủ và do đó, cung cấp một nền tảng ứng dụng an toàn.Docker Registry
Docker registry là một kho lưu trữ cho các hình ảnh Docker. Nó cung cấp các kho lưu trữ công khai và riêng tư. Docker registry công khai được gọi là Docker Hub. Tại đây, chúng ta có thể đẩy và kéo các hình ảnh của riêng mình.Cài đặt Docker trên Ubuntu 18.04
Trong phần này, bạn sẽ được hướng dẫn cài đặt docker. Trước khi cài đặt phần mềm, hãy kiểm tra phiên bản kernel và kiến trúc hệ điều hành. Các lệnh tiếp theo phải được chạy với tư cách là người dùng root. Chạy lệnh này để trở thành root trên hệ thống Ubuntu của bạn.
Mã:
sudo su
Mã:
uname -a
Bạn có thể thấy rằng tôi đang sử dụng phiên bản hạt nhân 4.15.0 với Hạt nhân 64Bit (x86_64).
Để kiểm tra phiên bản Ubuntu, hãy chạy:
Mã:
cat /etc/lsb-release
Lệnh này cho thấy phiên bản Ubuntu là 18.04.
Bạn nên cập nhật Ubuntu trước khi cài đặt phần mềm mới. Chạy lệnh sau để tải các bản cập nhật mới nhất từ kho lưu trữ Ubuntu và cài đặt chúng.
Mã:
sudo apt-get update
sudo apt-get upgrade
Để cài đặt Docker, chúng ta có thể sử dụng các gói từ 'Kho lưu trữ Ubuntu' hoặc sử dụng các gói từ 'Kho lưu trữ Docker'.
Cài đặt Docker từ Kho lưu trữ Ubuntu
Nếu bạn muốn cài đặt phiên bản docker từ kho lưu trữ Ubuntu, bạn có thể chạy lệnh apt bên dưới.
Mã:
sudo apt install docker.io
Mã:
systemctl start docker
systemctl enable docker
Mã:
docker --version
Và bạn sẽ cài đặt docker 17.12 từ Ubuntu Repository.
Cài đặt Docker từ Docker Repository
Trước khi cài đặt docker-ce từ kho lưu trữ Docker, hãy cài đặt một số phần phụ thuộc bằng lệnh apt như được hiển thị bên dưới.
Mã:
sudo apt install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic nightly" > /etc/apt/sources.list.d/docker-nightly.list
Mã:
sudo apt update
Kiểm tra tất cả các gói docker do kho lưu trữ docker cung cấp bằng lệnh apt-cache.
Mã:
sudo apt search docker-ce
sudo apt-cache policy docker-ce
Cài đặt bằng lệnh apt bên dưới.
Mã:
sudo apt install docker-ce
Mã:
systemctl start docker
systemctl enable docker
Mã:
docker --version
Chạy Docker với tư cách là Người dùng không phải root
Để chạy Docker với tư cách là người dùng bình thường/không phải root, chúng ta cần thêm một người dùng hệ thống mới. Chúng ta sẽ thêm người dùng mới có tên là 'hakase', sau đó thêm người dùng này vào nhóm 'docker'.Thêm người dùng 'hakase'.
Mã:
useradd -m -s /bin/bash hakase
passwd hakase
Mã:
usermod -aG docker hakase
Mã:
su - hakase
docker run hello-world
Cách sử dụng Docker cơ bản
Trong phần này, tôi sẽ chỉ cho bạn các tùy chọn thường dùng của lệnh docker. Ví dụ: cách tải xuống hình ảnh docker, xây dựng một container và cách truy cập container.Để tạo một container mới, bạn nên bắt đầu bằng cách chọn một hình ảnh cơ sở với hệ điều hành, ví dụ như ubuntu hoặc centos hoặc một hệ điều hành khác. Bạn có thể tìm kiếm một hình ảnh cơ sở bằng lệnh docker search:
Mã:
docker search ubuntu
Bây giờ là lúc tải xuống hình ảnh cơ sở về máy chủ của chúng ta, hãy sử dụng lệnh:
Mã:
docker pull ubuntu
Bây giờ bạn có thể xem tất cả hình ảnh đã tải xuống bằng cách sử dụng lệnh:
Mã:
docker images
Hình ảnh Ubuntu đã được tải xuống từ DockerHub/Docker Registry. Bước tiếp theo là tạo một container từ image đó.
Để tạo container, bạn có thể sử dụng docker create hoặc docker run.
Mã:
docker create ubuntu:18.04
lệnh docker create sẽ tạo một container mới nhưng không khởi động nó. Vì vậy, bây giờ bạn có thể sử dụng lệnh run:
Mã:
docker run -i -t ubuntu:18.04 /bin/bash
Container sẽ dừng khi bạn thoát khỏi nó bằng lệnh exit. Nếu bạn muốn có một container chạy ở chế độ nền, bạn chỉ cần thêm tùy chọn -d vào lệnh.
Mã:
docker run -i -t -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
/bin/sh -c "while true; do echo hello world; sleep 1; done" đây là tập lệnh bash để echo "hello word" mãi mãi.
Bây giờ bạn có thể thấy container chạy ở chế độ nền bằng cách sử dụng lệnh sau:
Mã:
docker ps
Mã:
docker logs NAMES/ContainerID
Lệnh này sẽ kết nối bạn với shell của container:
Mã:
docker exec -i -t NAMES/ContainerID /bin/bash
Bạn có thể thấy tên máy chủ và ID container bằng nhau, điều này có nghĩa là bạn đang ở bên trong shell container. Khi bạn nhập `exit` trên shell đó, bạn sẽ thoát khỏi shell đó nhưng container vẫn đang chạy.
Một lệnh khác mà bạn sẽ thường sử dụng là:
Mã:
docker stop NAME/ContainerID
Mã:
docker start NAME/ContainerID
Mã:
docker rm NAME/ContainerID
Phần giới thiệu chuyên sâu về Docker có trong loạt bài hướng dẫn Howtoforge này: https://www.howtoforge.com/tutorial/how-to-use-docker-introduction/