Hướng Dẫn Cài Đặt và Cấu Hình Docker

Phần 1: Chuẩn bị

Trước khi cài đặt Docker, cần gỡ bỏ các phiên bản cũ (nếu có) để tránh xung đột.

sudo apt remove --purge docker docker-engine docker.io containerd runc

Cập nhật danh sách gói phần mềm và nâng cấp hệ thống lên phiên bản mới nhất.

sudo apt update
sudo apt upgrade

Cài đặt các gói phần mềm cần thiết cho Docker.

sudo apt install ca-certificates curl gnupg lsb-release apt-transport-https software-properties-common

Thêm khóa GPG của Docker từ kho lưu trữ của Alibaba Cloud.

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

Thêm kho lưu trữ phần mềm Docker từ Alibaba Cloud vào hệ thống.

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Phần 2: Cài đặt Docker

Cài đặt Docker Engine, CLI và containerd.

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

Để cài đặt một phiên bản cụ thể, hãy chỉ định chuỗi phiên bản:

sudo apt install docker-ce=20.10.18 docker-ce-cli=20.10.18 containerd.io

Khởi động dịch vụ Docker và thiết lập để tự động khởi động cùng hệ thống.

sudo systemctl start docker
sudo systemctl enable docker.service

Kiểm tra trạng thái của dịch vụ Docker để đảm bảo nó đang chạy.

sudo systemctl status docker

Cấu hình Docker để sử dụng một máy chủ phản chiếu (mirror) để tăng tốc độ tải xuống hình ảnh. Thay đổi địa chỉ URL trong ví dụ sau bằng địa chỉ được cung cấp bởi nhà cung cấp dịch vụ đám mây của bạn.

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-EOF
{
  "registry-mirrors": ["https://your-mirror-address.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Cấu hình chi tiết hơn có thể bao gồm các tùy chọn sau:

{
  "exec-opts": [
      "native.cgroupdriver=systemd"
  ],
  "log-driver": "json-file",
  "log-opts": {
      "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
      "overlay2.override_kernel_check=true"
  ],
  "registry-mirrors" : [
      "https://your-mirror-address.mirror.aliyuncs.com"
  ],
  "graph": "/data/docker"
}

Phần 3: Kích hoạt Kết nối Từ xa và Hỗ trợ IntelliJ IDEA

Để cho phép các công cụ khác kết nối với Docker daemon từ xa, cần chỉnh sửa tệp dịch vụ.

sudo vim /usr/lib/systemd/system/docker.service

Trong tệp, tìm dòng `ExecStart` và thêm `-H tcp://0.0.0.0:2375` vào cuối. Điều này cho phép kết nối từ bất kỳ địa chỉ IP nào trên cổng 2375.

Sau khi chỉnh sửa, tải lại cấu hình và khởi động lại dịch vụ Docker.

sudo systemctl daemon-reload
sudo systemctl restart docker

Kiểm tra kết nối bằng cách truy cập địa chỉ: http://your-ip:2375/version

Trong IntelliJ IDEA, bạn có thể cấu hình Docker bằng cách vào File -> Settings -> Build, Execution, Deployment -> Docker và nhập địa chỉ Docker daemon đã cấu hình. Sau đó, bạn có thể quản lý các container và hình ảnh Docker trực tiếp từ IDE.

Phần 4: Tệp Dockerfile

Dockerfile là một tệp văn bản chứa các chỉ thị để tự động xây dựng hình ảnh Docker. Mỗi chỉ thị trong Dockerfile sẽ tạo ra một lớp mới trong hình ảnh cuối cùng. Việc tối ưu hóa các lớp là quan trọng để tránh làm cho hình ảnh trở nên quá lớn.

Ví dụ về một tệp Dockerfile:

FROM openjdk:11-jre-slim
LABEL maintainer="dev@example.com"
LABEL app="my-web-app"
ENV APP_HOME=/app
WORKDIR $APP_HOME
RUN apt-get update && apt-get install -y curl
COPY ./my-app.jar ./app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

Lệnh để xây dựng hình ảnh từ Dockerfile:

docker build -t ten-hinh-anh:phi-ban . -f Dockerfile

Trong IntelliJ IDEA, bạn có thể chạy Dockerfile trực tiếp trên Docker daemon từ xa để tạo hình ảnh và khởi động container.

Các chỉ thị Dockerfile phổ biến:

  • FROM: Chỉ định hình ảnh cơ sở để xây dựng.
  • LABEL: Thêm thông tin siêu dữ liệu cho hình ảnh.
  • ENV: Đặt biến môi trường bên trong container.
  • WORKDIR: Thiết lập thư mục làm việc cho các lệnh tiếp theo.
  • RUN: Thực thi lệnh trong một lớp mới trong quá trình xây dựng.
  • COPY: Sao chép tệp hoặc thư mục từ máy chủ vào hình ảnh.
  • EXPOSE: Khai báo cổng mạng mà container sẽ lắng nghe.
  • CMD: Chỉ định lệnh mặc định để chạy khi container khởi động.

Thẻ: docker container cloud-native DevOps

Đăng vào ngày 22 tháng 5 lúc 20:19