Chuyển đến nội dung chính

Bài đăng

Đang hiển thị bài đăng từ 2016

Các câu lệnh mở rộng của docker.

1.Bạn muốn copy hay download 1 file trong docker container về server host. Bạn dùng câu lệnh sau:
docker cp tenfile.txt containerID:/etc/ssl/privates/domain.key docker cp containerID:/etc/nginx/nginx.conf nginx.conf
2.Bạn chỉnh configuration bằng tay trong container, giờ bạn muốn lưu thành 1 image, để trong trường hợp xảy ra sự cố bạn có thể tạo nhanh 1 container trước khi tinh chỉnh bạn dùng câu lệnh sau: docker commit containerID owner_name/image_name
3.Để xóa 1 container bạn dùng câu lệnh sau:   docker rm containerID
4.Để xóa 1 image bạn dùng câu lệnh :
docker rmi image_name
5.Để xem tất cả các container (kể các container không chạy , ở trạng thái “exit”). Bạn dùng lệnh sau:

docker ps -a 

http://manageitservice247.com

Copy file trong docker container về server host.

Sau khi bạn chạy một docker container, nhưng trong docker container đó bạn cần backup 1 file cấu hình.
Ví dụ file nginx.conf chẳng hạn. Hoặc file SSL certificate.
Bạn làm như sau:

#docker cp <containerID>:/path/to/nginx.conf /path/to/save/fileonhostserver

Cụ thể như sau:

#docker cp nginx_container_id:/etc/nginx/nginx.conf .

Câu lệnh trên copy file nginx.conf trên container đang chạy lưu về server host tại vị trí chạy lệnh trên.

Tuy nhiên ta không thể copy file trong thư mục : /proc, /sys, /dev, tmpfs, and mounts created by the user in the container.

Đối với trường hợp này ta sử dụng lệnh tar để copy bằng tay.

$ docker exec foo tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH -

hoặc:

$ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i foo tar Cxf DEST_PATH -

Theo: http://manageitservice247.com/copy-file-trong-docker-container-ve-server-host/

Tạo mysql database và user, gán quyền user đó cho database.

Trong mysql để tạo database ta chạy lệnh sau:     mysql> CREATE DATABASE manageitservice; Sau khi truy cập vào chế độ command line của mysql  (mysql -uroot -p). Tạo user cho database nào đó: mysql>CREATE USER 'thanh'@'localhost' IDENTIFIED BY 'passmanageitservice'; Và gán quyền user này cho database: mysql> GRANT ALL PRIVILEGES ON manageitservice.* TO ‘thanh’@'localhost’;mysql> FLUSH PRIVILEGES;

Giới thiệu về Swig template engine.

Swig là một template engine mạnh mẽ, nó không những hổ trợ cho node.js mà còn hỗ trợ cho Django và Jinia2.  Ví dụ ta có một file html như sau :  <h1>{{ pagename|title }}</h1> <ul> {% for author in authors %} <li{% if loop.first %} class="first"{% endif %}> {{ author }} </li> {% endfor %} </ul> Trong file js bạn configure render template dùng swig như sau:  var swig = require('swig'); swig.renderFile('/path/to/template.html', { pagename: 'awesome people', authors: ['Paul', 'Jim', 'Jane'] }); Kết quả sau khi chạy node.js trên sẽ là:  <h1>Awesome People</h1> <ul> <li class="first">Paul</li> <li>Jim</li> <li>Jane</li> </ul>
Bạn có thể tham khảo thêm tại : http://paularmstrong.github.io/swig/ và https://github.com/paularmstrong/swig/

Dùng awk trong linux.

Trong linux khi muốn filter của print ra một giá trị nào đó. Thì thông thường thì ra sử dụng các câu lênh kết hợp với awk.

Ví dụ:

Bạn muốn in cột đầu tiên của tất cả các hàng (row) như sau:

ifconfig | awk '{print$1}'


manageitservice@ubuntu:~$ ifconfig | awk '{print$1}'
eth0
inet
inet6
UP
RX
TX
collisions:0
RX
lo
inet
inet6
UP
RX
TX
collisions:0
RX
Ví dụ bạn lấy ip address của tất cả các cạc mạng: 
ifconfig | awk -F"[ :]+" '/inet addr:/ {print $4}'
Bạn muốn lấy ethernet_name của một địa chỉ ip address nào đó. 
grep -B1 "inet addr:192.168.1.250" | awk '$1!="inet" && $1!="--" {print $1}' Print out sẽ là: 

ubuntu@ubuntu:~$ ifconfig | grep -B1 "inet addr:192.168.1.250" | awk '$1!="inet" && $1!="--" {print $1}'
eth0



Giới hạn số connection trên ip của vsftp.

Giới hạn số connection trên ip của vsftp.

Mặc định vsftpd không giới hạn số connection trên một ip nguồn. Dể set giới hạn trên một ip pub kết nồi vào vsftpd server ta cấu hình sau. Mở file : vsftpd.conf vi /etc/vsftpd.conf Set số connection: max_per_ip = 4 Sau đó restart lại vsftpd. # /etc/init.d/vsftpd restart

Bạn sẽ gặp lỗi sau khi giới hạn connection trên server ftp : 
Status:Connecting to manageitservice247.com:21...
Status:Connection established, waiting for welcome message...
Response:421 There are too many connections from your internet address.
Error:Could not connect to server
Status:Waiting to retry...

StackOverflow nơi không thể thiếu cho dân lập trình.

Với giới lập trình máy tính StackOverflow khá quen thuộc, hầu như ngày nào cũng vào StackOverflow. Vì StackOverflow cung cấp một dữ liệu khổng lồ về lập trình, về các câu hỏi & trả lời về lập trình cũng như hệ thống mạng. Tôi tham gia StackOverflow khoảng 2 năm và trong vòng 6 tháng gần đây tôi cố gắng trả lời & chia sẽ những kiến thức mình biết cho các bạn. Và hôm này tôi rất vui khi được xếp vào top 2% this week. Các tính reputation của StackOverflow rất hay. - Bạn trả lời được các user đánh giá 1 thì bạn sẽ được 10 reputation. - Câu trả lời của bạn được người hỏi tick là câu trả lời chính xác (tick màu xanh) thì bạn sẽ được 15 reputation.

Cài đặt docker trên windows server 2016.

1. Cài đặt Windows Server 2016 Container Feature:  Mở PowerShell : Cài đặt các container feature dùng powershell: Dùng lệnh: InstallWindowsFeature containers Restart lại windows: 2. Cài đặt windows server 2016 base image:  Cài đặt mô đun : ContainerImage Dùng lệnh: Install-PackageProvider ContainerImage -force List các image có giá trị: Cài đặt Windows Server Core : 3. Cài đặt docker trên windows server 2016. Download script để cài đặt docker : Chạy script : Kiểm tra các image có trên server :

Docker hub là gì ?

Docker cung cấp một nơi lưu trữ image trên cloud, docker gọi nó là docker hub. Docker hub cung cấp một cách tập trung tài nguyên cho việc tìm kiếm image, phân phối và quản lý sự thay đồi của image. Devops và developer có thể dùng các image này một cách tự động và theo flow. Dcoker Hub cung cấp các tính năng sau: 1. Image repo: tìm kiếm , lưu trữ, push và pull image cho cộng đồng người dùng docker và offical  và các image dành riêng cho sản phầm. 2. Xây dựng một cách tự động: Từ động build những image khi có sự thay đổi code của sản phẩm trên github hoặc bitbucket. 3. Webhook: Là một tính năng của tự động build, webhook thông báo cho bạn biết khi có push thành công lên một repo. 4. Tổ chức : Tạo những nhóm làm việc được truy cập vào image. 5. Tích hợp với github và bitbucket. Bạn có thể đăng ký github tại : https://hub.docker.com/ Với bản free bạn chỉ lưu trữ được một image dưới chế độ private.  Các image còn lại ở chế độ public. Các câu lệnh khi dùng với docker hub: docker search doc…

Exception trong python.

Python cung cấp 2 tính năng rất quan trọng để handle những lỗi không mong muốn và thêm khả năng debug trong ứng dụng python của bạn.

1. Exception handling.
2. Assertions.

Trong phần này ta chỉ chú trọng bào Exception handling.

Danh sách các Exception tiêu chuẩn:

EXCEPTION NAMEDESCRIPTIONExceptionBase class for all exceptionsStopIterationRaised when the next() method of an iterator does not point to any object.SystemExitRaised by the sys.exit() function.StandardErrorBase class for all built-in exceptions except StopIteration and SystemExit.ArithmeticErrorBase class for all errors that occur for numeric calculation.OverflowErrorRaised when a calculation exceeds maximum limit for a numeric type.FloatingPointErrorRaised when a floating point calculation fails.ZeroDivisonErrorRaised when division or modulo by zero takes place for all numeric types.AssertionErrorRaised in case of failure of the Assert statement.AttributeErrorRaised in case of failure of attribute reference or assignment.EOF…

Tuples trong python.

Không giống như list trong python. tuple là một tuần tự của những đối tượng không thay đổi được. Thông thường được bắt đầu bởi dấu ( và kết thúc là dấu )

Ví dụ ta có 1 tuple sau:

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

Một tuple rỗng thì được định nghĩa:

tup = ();

Bạn có thể định nghĩa:

tup = (50,);

Truy cập giá trị trong tuple:

`#!/usr/bin/python

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );

print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]`


Khi chạy file code trên giá trị in ra sẽ là:

tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]\

Thay đổi giá trị tuple, như đã nói ở trên tuple khác với list là không thể thay đổi giá trị của tuple :

ví dụ:
#!/usr/bin/python

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# không thay đổi được giá trị tuple
# tup1[0] = 100;

# So let's create a new tuple as follows
tup3 = t…

Khác nhau giữa Chef và Ansible.

Nói chung 2 tools này có công dụng thì như nhau, nhưng nó có 1 số đặc điểm khác nhau như sau:

1. Chef được viết bằng ruby và dùng các syntax của ruby để viết các cookbook. Trong khi python là ngôn ngữ chính của Ansible.

2. Chef khi boottrap thì phải thông qua Server chủ của chef, còn Ansible thì chạy thẳng từ PC của admin lên các server được tạo và Ansible sử dụng ssh trực tiếp vào trong server được tạo để cài đặt.

3. Khả năng cài đặt bằng chef nhanh hơn bằng Ansible.

4. Trái tim của Chef là cookbook còn Ansible là playbook