Skip to main content

Posts

Showing posts with the label container

[TIL] Docker trên MacOS share toàn bộ thư mục $HOME /Users/you với Docker Machine

Docker chạy được trên các hệ điều hành không phải Linux là 1 điều kỳ diệu. Điều kỳ diệu ấy nhờ việc các hệ điều hành tạo ra một máy ảo Linux rồi chạy container trên đó. Máy ảo này thường gọi là Docker machine, Podman machine, hay cái gì đó machine. Nhưng làm thế nào khi bind mount: -v $PWD:/app , thư mục hiện tại trên MacOS, ví dụ /Users/pikachu/fml lại xuất hiện trong container? Share /Users cho máy ảo Hầu hết người dùng đều mount từ 1 thư mục nào đó trong "$HOME" của user vào container, vậy nên mặc định Docker machine share sẵn thư mục này, bao gồm tất cả mọi thứ, kể cả .bashrc hay .ssh, ... Virtual file shares By default the /Users, /Volumes, /private, /tmp and /var/folders directory are shared. If your project is outside this directory then it must be added to the list, otherwise you may get Mounts denied or cannot start service errors at runtime. https://docs.docker.com/desktop/settings-and-maintenance/settings/#virtual-file-shares Vì thư mục được mount nằm tron...

Đọc code xem NGINX auto dùng bao nhiêu worker_processes trong container

NGINX là HTTP server phổ biến nhất trên thế giới. NGINX có kiến trúc "master" - "worker", với master process làm nhiệm vụ quản lý, và các worker process sẽ nhận các HTTP request và xử lý. NGINX worker_processes là gì Số lượng worker process được set bằng config directive: worker_processes mặc định là 1, và có thể "tự động" với từ khóa auto . Syntax: worker_processes number | auto; Default: worker_processes 1; Context: main Defines the number of worker processes. The optimal value depends on many factors including (but not limited to) the number of CPU cores, the number of hard disk drives that store data, and load pattern. When one is in doubt, setting it to the number of available CPU cores would be a good start (the value “auto” will try to autodetect it). The auto parameter is supported starting from versions 1.3.8 and 1.2.5. https://nginx.org/en/docs/ngx_core_module.html#worker_processes khi set auto , NGINX sẽ try to autodetect ...

Docker image alpine/curl không phải alpine

Nếu cần chạy 1 câu lệnh curl (hay http client khác để truy cập web API) trên container, dùng image nào nhẹ nhất? NOTE: thay podman bằng docker nếu dùng docker. alpine rồi cài curl alpine vốn phổ biến trong giới container vì nhẹ, nhưng không có sẵn curl, phải cài: $ podman run -it alpine sh -c 'apk add curl>/dev/null; curl https://www.openbsd.org/robots.txt' User-agent: * Disallow: /cgi-bin/ Disallow: /donations.html alpine/curl KHÔNG PHẢI alpine Google alpine curl xem image alpine nào cài sẵn curl? thấy ngay kết quả top alpine/curl , và dùng có vẻ thành công: $ podman run -it docker.io/alpine/curl sh -c 'curl https://www.openbsd.org/robots.txt' Trying to pull docker.io/alpine/curl:latest... Getting image source signatures Copying blob 9f444ea7cf45 done Copying blob 299588fda28b done Copying blob c6a83fedfae6 done Copying config d4f2de61cf done Writing manifest to image destination Storing signatures User-agent: * Disallow: /cgi-bin/ Disallow: /donations.ht...

Dùng kubernetes không phức tạp hơn việc thường ngày của sysadmin

Bài viết dành cho các sysadmin/DevOps: Những người nghe nói đến K8S và các lời chê về sự phức tạp của nó Những người định học dùng K8S mà ngại nhiều khái niệm mới. Những người có kiến thức về các hệ thống trước "thời" Kubernetes (K8S), giúp kết nối các khái niệm, hiểu lý do tại sao K8S lại phức tạp đến thế. Để dùng K8S, người dùng sẽ gặp phải một loạt các khái niệm: pod deployment rollout replicaset daemonset service configmap secret namespace resourcequota persistentVolume PersistentVolumeClaim Sau đó các khái niệm ngoài K8S, các tool dùng với K8S như: helm/chart ... tất cả các khái niệm này đều không mới, chỉ là các tên mới dành cho hệ thống dùng container, tương đương với các khái niệm/kiến thức khi quản trị một hệ thống server truyền thống (máy ảo/máy vật lý). Pod Pod là đơn vị nhỏ nhất được quản lý trong K8S. Pod là một hoặc nhiều container cùng bật cùng tắt, cùng chung IP, cùng chung ổ cứng. Vì mỗi container thường là một 1 process, nên nế...

Kiến trúc Docker, phỏng vấn, best practice

Bài này không giới thiệu về docker, "lúc nào rảnh" chắc sẽ có bài đó. Bài này nói về kiến trúc của docker, các công nghệ liên quan phía dưới mà docker sử dụng - thường có tác dụng lớn khi 1) chém gió lên mặt 2) phỏng vấn. Ngoài ra có kèm theo một số best-practice khi build docker image để có size nhỏ/build nhanh hơn. Photo by Andy Li on Unsplash Kiến trúc của Docker Docker là một phần mềm viết bằng Golang, theo kiến trúc client-server. Nghe hình thức thì vậy, mô hình này nham nhảm khắp nơi khi dùng các database: mysql sẽ có mysqld và mysql client (cli, GUI) ... redis có redis-server và redis-cli... Docker có dockerd và docker-cli.

Kubernetes - rồi cũng đến đít

Gần 1 tháng sau bài "từ đầu" ra đời http://www.familug.org/2017/03/kubernetes.html mình vẫn chưa động vào Kubernetes. Vậy nên viết nhanh phần đến đít, không mai kia rơi vãi hết. Bài này KHÔNG PHẢI HƯỚNG DẪN DÙNG K8s, ai cần hướng dẫn thì vào trang chủ xem. Bài này tổng kết về kinh nghiệm sử dụng K8s: Khái niệm, kiến trúc, troubleshoot, ... dựa trên trí nhớ mong manh còn sót lại chút ít sau những cơn lụt ở Sài Gòn... Kubernetes Các khái niệm trong K8s K8s đưa ra một lô 1 lốc các khái niệm. Vậy nên muốn dùng k8s, phải nắm chắc các khái niệm. Xem thì có vẻ nhiều, nhưng đó là những thứ mà nếu như k8s không đưa ra, thì một ngày nào đó, bạn cũng lại tự "phát minh" ra (và 99,96 % là tệ / tạm bợ hơn nhiều). Pod Pod là một khái niệm rộng hơn container, nhưng đa số trường hợp thì đánh đồng nó với container cũng không sao. Pod là 1 nhóm (1 trở lên) các container thực hiện một mục đích nào đó (chạy software nào đó - pod có nhiều container là khi các app có ...

Kubernetes từ đầu ...

Một công nghệ xây dựng dựa trên 15 tinh hoa vận hành hệ thống G o o g l e . Một sản phẩm của chính G o o g l e , viết trên ngôn ngữ lập trình phát triển tại G o o g l e ( Golang ). Một công nghệ mới được công bố từ giữa năm 2014, nhưng đã chiếm lĩnh thị phần không nhỏ trên các hệ thống cloud. Một từ khoá nóng nhất mà các sysadmin/devops đều muốn có trong danh sách kỹ năng của mình. Đó là Kubernetes ! Kubernetes là gì Kubernetes hay K8s là một hệ thống để quản lý các "container". Theo Kubernetes GitHub repository : Kubernetest - Production-Grade Container Scheduling and Management Kubernetes is an open source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications. Nói một cách dễ hiểu, nếu bạn biết dùng Docker hoặc rkt [0] để chạy các container, thì K8s là giải pháp để quản lý chúng (quản lý bao gồm: tạo, sửa, xoá, xếp lịch(schedule), hay mở rộng (s...

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG