1. Cài đặt Docker thủ công không cần kết nối mạng
Trong môi trường máy chủ không có truy cập Internet, việc cài đặt Docker cần thực hiện thông qua các binary package tải về từ máy khác. Dưới đây là quy trình cài đặt phiên bản 19.03.15 trên hệ điều hành CentOS 7.
1.1. Chuẩn bị và giải nén
Tải gói cài đặt phù hợp từ kho lưu trữ chính thức của Docker về máy tính có mạng, sau đó chuyển sang máy chủ đích. Gói sử dụng trong hướng dẫn này là docker-19.03.15.tgz.
Thực hiện giải nén tệp tin đã tải về:
tar -zxvf docker-19.03.15.tgz
1.2. Di chuyển thực thi vào hệ thống
Sau khi giải nén, di chuyển các file thực thi vào thư mục chung của hệ thống để có thể gọi lệnh từ bất kỳ đâu:
cp docker/* /usr/bin/
1.3. Cấu hình Systemd Service
Để quản lý Docker như một service chuẩn của hệ thống, cần tạo file cấu hình cho systemd. Tạo file mới tại /etc/systemd/system/docker.service với nội dung sau:
[Unit]
Description=Docker Container Engine
Documentation=https://docs.docker.com
After=network.target firewalld.service
Wants=network.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
1.4. Kích hoạt và khởi chạy
Cấp quyền thực thi cho file service, nạp lại cấu hình systemd và khởi động Docker:
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
Để đảm bảo Docker tự động chạy khi khởi động lại máy, thực hiện lệnh:
systemctl enable docker
2. Thay đổi đường dẫn lưu trữ dữ liệu Docker
Mặc định, Docker lưu trữ images, containers và volumes tại /var/lib/docker. Nếu thư mục này có dung lượng hạn chế, bạn cần chuyển đổi sang một partition khác có không gian lớn hơn.
2.1. Dừng các tiến trình đang chạy
Trước khi di chuyển dữ liệu, cần đảm bảo không có container nào đang hoạt động và service Docker đã được tắt hoàn toàn:
docker stop $(docker ps -q)
systemctl stop docker
2.2. Di chuyển dữ liệu hiện có
Tạo thư mục mới tại vị trí mong muốn (ví dụ: /data/docker-storage) và chuyển toàn bộ dữ liệu cũ sang đây:
mkdir -p /data/docker-storage
rsync -avz /var/lib/docker/ /data/docker-storage/
2.3. Cấu hình lại Daemon (Khuyến nghị)
Phương án tối ưu là cấu hình trực tiếp trong file daemon.json thay vì sử dụng soft link. Tạo hoặc chỉnh sửa file tại /etc/docker/daemon.json:
{
"data-root": "/data/docker-storage",
"registry-mirrors": ["https://hub-mirror.c.163.com"]
}
Tham số data-root sẽ chỉ định nơi Docker lưu trữ dữ liệu mới. Sau khi lưu file, khởi động lại service để áp dụng thay đổi:
systemctl daemon-reload
systemctl start docker
Kiểm tra lại đường dẫn lưu trữ để xác nhận cấu hình đã thành công:
docker info | grep "Docker Root Dir"