Thông thường sẽ có hai phương pháp để cài đặt và sử dụng Docker trên CentOS 7. Phương pháp đầu tiên liên quan đến cài đặt trên phiên bản hiện có của hệ điều hành. Phương pháp thứ hai liên quan đến khởi chạy một server với công cụ Docker Machine để tự động cài đặt Docker. Trong bài viết này, bạn sẽ được học cách cài đặt và sử dụng Docker trên phiên bản hiện có của CentOS 7.
Yêu cầu để cài đặt và sử dụng Docker trên CentOS 7
Để thực hiện được các bước trong bài viết thì bạn cần có đủ 2 yêu cầu sau:
- Máy chủ CentOS 7 64-bit.
- Người dùng không phải là root nhưng có quyền sudo.
Cài đặt Docker trên VPS là một gợi ý hoàn hảo cho những ai muốn triển khai các ứng dụng trên môi trường ảo hóa. Đặc biệt, nó còn có thể giúp bạn quản lý và triển khai các ứng dụng một cách tối ưu hơn. Hiện tại Vietnix cung cấp dịch vụ VPS tốc độ cao với mức giá phải chăng, giúp bạn chủ động cài đặt và quản lý ứng dụng. Các gói VPS tính đến thời điểm hiện tại bao gồm: VPS Giá Rẻ, Cloud Server, VPS Cao Cấp, VPS GPU và VPS NVMe.
Nhanh tay liên hệ Vietnix để được tư vấn gói VPS phù hợp với nhu cầu ngay hôm nay!
Bước 1 – Cài đặt Docker
Bản cài đặt Docker có sẵn trong kho lưu trữ của CentOS 7 nhưng có thể không phải là phiên bản mới nhất. Để có phiên bản mới nhất, bạn hãy cài đặt Docker từ kho lưu trữ chính thức của Docker.
Tuy nhiên, trước tiên bạn cần cập nhật package database:
sudo yum check-update
Chạy lệnh sau để thêm kho lưu trữ chính thức của Docker, tải xuống phiên bản mới nhất của Docker và tiến hành cài đặt:
curl -fsSL https://get.docker.com/ | sh
Sau khi cài đặt hoàn tất, khởi động daemon Docker:
sudo systemctl start docker
Xác minh rằng Docker đang chạy bằng lệnh sau:
sudo systemctl status docker
Output như sau cho thấy dịch vụ đang hoạt động và chạy:
Output
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago
Docs: https://docs.docker.com
Main PID: 749 (docker)
Cuối cùng, hãy đảm bảo rằng Docker sẽ khởi động mỗi khi khởi động lại máy chủ bằng lệnh:/
sudo systemctl enable docker
Việc cài đặt Docker không chỉ cung cấp cho bạn dịch vụ Docker (daemon) mà còn cung cấp cho bạn tiện ích command line docker
hay Docker client. Bạn sẽ được tìm hiểu cách sử dụng lệnh docker
sau trong bài viết này.
Bước 2 – Thực thi lệnh Docker mà không cần dùng Sudo (Tùy chọn)
Mặc định, khi chạy lệnh docker
yêu cầu quyền root thì bạn phải thêm tiền tố sudo
vào trước lệnh. Lệnh có thể được chạy bởi một người dùng trong nhóm docker được tự động tạo ra trong quá trình cài đặt Docker. Nếu bạn cố gắng chạy lệnh docker
mà không thêm tiền tố sudo
hoặc không thuộc nhóm docker, bạn sẽ nhận được output như sau:
Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
Nếu bạn muốn tránh phải gõ sudo
mỗi khi chạy lệnh docker
, hãy thêm username của bạn vào nhóm docker:
sudo usermod -aG docker $(whoami)
Nếu bạn cần thêm một người dùng vào nhóm docker
mà bạn không đang đăng nhập với tên đó thì hãy khai báo tên đó rõ ràng bằng cách sử dụng:
sudo usermod -aG docker username
Bạn sẽ chạy lệnh docker
như một người dùng trong nhóm docker trong phần còn lại của bài viết. Nếu bạn không muốn thì có thể thêm sudo
vào trước các lệnh.
Bước 3 – Sử dụng lệnh Docker
Với bản Docker đã được cài đặt và hoạt động, bạn hãy làm quen với tiện ích command line. Sử dụng docker
bao gồm việc truyền một chuỗi các tùy chọn và các lệnh con theo sau là các đối số. Cú pháp có dạng như sau:
docker [option] [command] [arguments]
Để xem tất cả các lệnh con có sẵn, bạn hãy gõ:
docker
Kể từ Docker 1.11.1, danh sách đầy đủ các lệnh con có sẵn bao gồm:
Output
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
network Manage Docker networks
pause Pause all processes within a container
port List port mappings or a specific mapping for the CONTAINER
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart a container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop a running container
tag Tag an image into a repository
top Display the running processes of a container
unpause Unpause all processes within a container
update Update configuration of one or more containers
version Show the Docker version information
volume Manage Docker volumes
wait Block until a container stops, then print its exit code
Để xem các switch có sẵn cho một lệnh cụ thể, gõ lệnh sau:
docker docker-subcommand --help
Để xem thông tin toàn bộ hệ thống, sử dụng lệnh:/
docker info
Bước 4 – Làm việc với Docker Images
Docker container được chạy từ Docker images. Mặc định, Docker sẽ tải các image này từ Docker Hub. Bất cứ ai cũng có thể xây dựng và đăng tải Docker images của mình lên Docker Hub. Vì vậy hầu hết các ứng dụng và bản phân phối Linux bạn cần để chạy Docker containers đều có các image được lưu trữ trên Docker Hub.
Để kiểm tra xem bạn có thể truy cập và tải xuống các image từ Docker Hub hay không, hãy gõ lệnh:/
docker run hello-world
Output có các thông tin như sau cho thấy Docker đang hoạt động bình thường:
Output
Hello from Docker.
This message shows that your installation appears to be working correctly.
...
Bạn có thể tìm kiếm các image có sẵn trên Docker Hub bằng cách sử dụng lệnh docker
với subcommand là search
. Ví dụ, để tìm kiếm image CentOS, bạn gõ lệnh:
docker search centos
Script này sẽ duyệt qua Docker Hub và trả về một danh sách các image có tên phù hợp với chuỗi tìm kiếm. Trong trường hợp này, output sẽ tương tự như sau:
Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 2224 [OK]
jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 22 [OK]
jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 17 [OK]
million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 11 [OK]
nimmis/java-centos This is docker images of CentOS 7 with dif... 10 [OK]
torusware/speedus-centos Always updated official CentOS docker imag... 8 [OK]
nickistre/centos-lamp LAMP on centos setup 3 [OK]
...
Trong cột OFFICIAL, OK chỉ ra một image được xây dựng và được hỗ trợ bởi công ty đứng sau dự án. Sau khi bạn đã xác định được image mà bạn muốn sử dụng, bạn có thể tải nó về máy tính của mình bằng cách sử dụng lệnh pull
như sau:
docker pull centos
Sau khi image đã được tải xuống, bạn có thể chạy một container bằng cách sử dụng image đã tải với lệnh run
. Nếu image chưa được tải xuống khi docker
được thực thi với lệnh run
, Docker client sẽ tải xuống image trước sau đó chạy một container để sử dụng nó:
docker run centos
Để xem các image đã được tải vào máy tính của bạn, nhập lệnh sau đây:
docker images
Output sẽ trông giống như sau:
[secondary_lable Output]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 778a53015523 5 weeks ago 196.7 MB
hello-world latest 94df4f0ce8a4 2 weeks ago 967 B
Các image mà bạn sử dụng để chạy các container có thể được sửa đổi và sử dụng để tạo ra các image mới. Sau đó có thể được upload lên Docker Hub hoặc các kho Docker khác.
Bước 5 – Chạy một Docker Container
Container hello-world
mà bạn đã chạy ở bước trước là một ví dụ về một container chạy và thoát sau khi phát ra một tin nhắn kiểm tra. Tuy nhiên, container hữu ích hơn thế và chúng có thể tương tác. Chúng tương tự như các máy ảo nhưng tốn ít tài nguyên hơn.
Ví dụ, bạn hãy chạy một container bằng cách sử dụng image CentOS mới nhất. Kết hợp giữa các tùy chọn -i và -t sẽ cho bạn truy cập shell tương tác vào container:
docker run -it centos
Command prompt của bạn sẽ thay đổi để phản ánh về việc bạn đang làm việc bên trong container:
Output
[root@59839a1b7de2 /]#
Lưu ý: Chú ý đến ID của container trong dấu nhắc lệnh. Trong ví dụ trên, đó là 59839a1b7de2
.
Bây giờ bạn có thể chạy bất kỳ lệnh nào bên trong container. Ví dụ, hãy cài đặt server MariaDB trong container đang chạy. Không cần thêm sudo
vào bất kỳ lệnh nào với vì bạn đang hoạt động bên trong container với đặc quyền root:
yum install mariadb-server
Bước 6 – Lưu các thay đổi trong một container thành một Docker Image
Khi khởi động một Docker image, bạn có thể tạo, sửa đổi và xóa file giống như bạn làm với một máy ảo. Những thay đổi mà bạn thực hiện chỉ áp dụng cho container đó. Bạn có thể khởi động và tắt container. Nhưng khi bạn xóa container đó bằng lệnh docker rm
, các thay đổi sẽ mất mãi.
Bước này sẽ hướng dẫn bạn cách lưu trạng thái của container như một Docker image mới.
Sau khi cài đặt MariaDB server trong container CentOS, bạn có một container đang chạy dựa trên một image. Nhưng container này khác với image bạn đã sử dụng để tạo. Để lưu trạng thái của container như một image mới, trước tiên bạn cần thoát khỏi đó:
exit
Sau đó commit các thay đổi vào một instance mới của Docker image bằng lệnh sau. Tùy chọn -m dùng để đặt thông báo commit giúp bạn và những người khác biết các thay đổi bạn đã thực hiện. -a được sử dụng để chỉ định tác giả.
Container ID là mã bạn đã ghi chú trước đó khi bạn bắt đầu phiên tương tác docker. Trừ khi bạn tạo các kho lưu trữ khác trên Docker Hub, thường thì kho lưu trữ là tên người dùng của bạn trên Docker Hub:
docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name
Ví dụ:
docker commit -m "added mariadb-server" -a "Sunday Ogwu-Chinuwa" 59839a1b7de2 finid/centos-mariadb
Lưu ý: Khi bạn commit một image, image mới được lưu trên máy tính của bạn. Sau này, bạn sẽ được hướng cách đẩy một image lên Docker registry như Docker Hub để có thể được truy cập và sử dụng bởi nhiều người dùng.
Sau khi hoàn tất, việc liệt kê Docker image trên máy tính của bạn sẽ hiển thị cả image mới và cũ:
docker images
Output sẽ có dạng như sau:
Output
REPOSITORY TAG IMAGE ID CREATED SIZE
finid/centos-mariadb latest 23390430ec73 6 seconds ago 424.6 MB
centos latest 778a53015523 5 weeks ago 196.7 MB
hello-world latest 94df4f0ce8a4 2 weeks ago 967 B
Trong ví dụ trên, centos-mariadb là image mới được dẫn xuất từ image CentOS đã có trên Docker Hub. Sự khác biệt về kích thước cho thấy có nhiều thay đổi giữa các bản image. Trong ví dụ này, sự thay đổi là MariaDB server đã được cài đặt. Vì vậy, khi bạn cần chạy một container sử dụng CentOS với MariaDB server được cài đặt trong lần tới, bạn chỉ cần sử dụng image mới này. Image cũng có thể được xây dựng từ Dockerfile. Tuy nhiên đó là một quá trình rất phức tạp không thuộc phạm vi của bài viết này và sẽ được đề cập vào các phần hướng dẫn khác.
Bước 7 – Liệt kê các container Docker
Sau khi sử dụng Docker một thời gian thì sẽ có nhiều container đang hoạt động và không hoạt động trên máy tính của bạn. Để xem các container đang hoạt động, bạn hãy sử dụng lệnh:
docker ps
Bạn sẽ thấy output tương tự như sau:
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c79cc556dd centos "/bin/bash" 3 hours ago Up 3 hours silly_spence
Để xem tất cả các container đang hoạt động và không hoạt động, thêm chuyển đổi -a
vào phía sau:
docker ps -a
Để xem container mới nhất bạn đã tạo, hãy thêm chuyển đổi -l
:
docker ps -l
Dừng container đang chạy hoặc đang hoạt động đơn giản bằng cách gõ:
docker stop container-id
container-id
có thể được tìm thấy trong output của lệnh docker ps
.
Bước 8 – Đẩy Docker Images lên Docker Repository
Bước tiếp theo sau khi tạo một image mới từ image hiện có là chia sẻ đến với một số người bạn, Docker Hub hoặc Docker Repository mà bạn có quyền truy cập. Để đẩy một image lên Docker Hub hoặc Docker Repository, bạn phải có một tài khoản ở đó.
Bước này sẽ chỉ bạn cách đẩy một Docker image lên Docker Hub.
Đầu tiên bạn cần tạo một tài khoản trên Docker Hub. Sau đó, để đẩy image của bạn lên, hãy đăng nhập vào Docker Hub. Bạn sẽ được nhắc nhập thông tin xác thực:
docker login -u docker-registry-username
Thực hiện nhập thông tin xác thực. Sau đó, bạn có thể đẩy image của mình bằng cách sử dụng lệnh:
docker push docker-registry-username/docker-image-name
Khi hoàn tất, output sẽ có dạng như sau:
Output
The push refers to a repository [docker.io/finid/centos-mariadb]
670194edfaf5: Pushed
5f70bf18a086: Mounted from library/centos
6a6c96337be1: Mounted from library/centos
...
Sau khi đẩy image lên kho chứa thì image sẽ được liệt kê trên bảng điều khiển tài khoản của bạn như trong hình ảnh dưới đây.
Nếu một lần đẩy image gặp phải lỗi như sau thì bạn có thể chưa đăng nhập:
Output
The push refers to a repository [docker.io/finid/centos-mariadb]
e3fbbfb44187: Preparing
5f70bf18a086: Preparing
a3b5c80a4eba: Preparing
7f18b442972b: Preparing
3ce512daaf78: Preparing
7aae4540b42d: Waiting
unauthorized: authentication required
Hãy đăng nhập, sau đó thử lại việc đẩy image.
Lời kết
Với bài viết trên bạn đã học được cách cài đặt và sử dụng Docker trên CentOS 7. Hy vọng với nội dung trong bài viết đã giúp bạn bạn bắt đầu làm việc với Docker một cách dễ dàng. Theo dõi Vietnix để học hỏi thêm nhiều kiến thức bổ ích nhé.