+1

CÀI ĐẶT PORTAINER ĐỂ QUẢN LÝ DOCKER HOST

Portainer là công cụ quản lý Docker Containter miễn phí với kích thước gọn nhẹ và giao diện quản lý trực quan, đơn giản để triển khai cũng như sử dụng, cho phép người dùng dễ dàng quản lý Docker host.

1. Hướng dẫn cài đặt Portainer

Tạo Docker Volume để lưu trữ thông tin.

docker volume create portainer_data

Chạy Container từ image Portainer

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Sử dụng lệnh docker ps để kiểm tra các container đang chạy, như hình dưới container Portainer đã run thành công. image.png

2. Truy cập Portainer

Các bạn truy cập trang quản trị Portainer bằng đường dẫn sau.

http://[IP_Address]:9000

Lần truy cập đầu tiên, Portainer sẽ yêu cầu người dùng thiết lập mật khẩu của tài khoản admin. image.png

Sau khi tạo thành công User và đăng nhập được vào Portainer, giao diện Portainer sẽ hiển thị như hình dưới. image.png

3. Hướng dẫn thêm một docker host

Cách 1: Sử dụng Portainer Agent trên docker host mà bạn muốn add vào Portainer.

Bước 1: Chạy container từ images portainer/agent

docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:latest

Bước 2: Truy cập trang Portainer chọn Mục Environment -> Add environment image.png

image.png

Ở tab Agent, các bạn điền tên, điền thông tin IP và Port chạy Portainer Agent vào. Sau đó chọn Connect. image.png

Cách 2: Expose Docker API trên docker host mà bạn muốn add vào Portainer. Bước 1: Điều chỉnh cấu hình của Docker trên remote host

nano /lib/systemd/system/docker.service

image.png Mục ExecStart thêm trường -H=tcp://0.0.0.0:2375 để export Docker API ra ngoài. Lưu ý cấu hình 0.0.0.0 đồng nghĩa với việc bất kỳ ai cũng có thể truy cập được.

Bước 2: Restart docker daemon và container trên remote host

systemctl daemon-reload
sudo service docker restart

Bước 3: Truy cập trang Portainer chọn Mục Environment -> **Add environment image.png

image.png

Ở tab Api, các bạn điền tên, điền thông tin IP và Port chạy Portainer Agent vào. Sau đó chọn Connect. image.png

Lưu ý: Khi triển khai hệ thống các bạn nên chọn phương án triển khai để quy hoạch ports cho team Network khai báo mở firewalld từ server cài Portainer đến các remote host

4. Thông tin remote host đã được kết nối

Để xem thông tin của từng host đã kết nối, bạn đọc vào menu “Home” ở bên trái. Trang web sẽ hiển thị danh sách các host đã được kết nối. Nhấn chọn host bạn muốn truy cập dựa vào danh sách đang hiển thị để truy cập vào trang quản lý thông tin của host đó. image.png

image.png

Bây giờ các bạn có thể start, stop, hay remove các container mà không phải gõ command line nữa. Vậy các bạn hoàn toàn có thể kiểm soát được toàn bộ hệ thống docker cho dự án của mình.

5. Expose Portainer truy cập qua Domain

Mình sẽ hướng dẫn các bạn cấu hình expose portainer truy cập qua domain.

Bước 1: Bạn tạo file config portainer.conf trong nginx

server {
    listen 80 ;
    listen       443 ssl ;#default_server;
        server_name portainer.local.vn; => subdomain sử dụng expose portainer
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
        }
      client_max_body_size 10G;

      ssl_certificate /etc/ssl/local.vn/local.cer;
      ssl_certificate_key /etc/ssl/local.vn/local.key;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    access_log /opt/logs/nginx/monitorq.log;
     error_log /opt/logs/nginx/monitor_error.log;   # proxy_read_timeout 600;

  location / {
      proxy_set_header  Host $host;
      proxy_set_header  X-Real-IP $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto $scheme;
      proxy_pass        http://[ip_portainer]:9000; => Cấu hình gọi đến server cài portainer
      proxy_read_timeout        1800;
      proxy_connect_timeout   180;
      proxy_send_timeout        180;
      send_timeout              180;
      
     ** # WebSocket support**
      proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
  }

Bước 2: Reload lại cấu hình nginx và tận hưởng thành quả thôi.

image.png

Lưu ý: Mình có gặp 1 lỗi là khi truy cập portainer qua nginx thì không console vào được container của remote host. Các bạn thêm config WebSocket support trong file config nginx để enable WebSocket cho việc console vào container.

6. Tổng kết:

Với những dự án nhỏ không sử dụng quá nhiều services hay containers docker thì bạn không nhất thiết phải cài đặt portainer để quản lý, vẫn hoàn toàn có thể sử dụng command line để quản lý cho chuyên nghiệp.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí