Skip to main content

Bắt đầu với Docker?


Docker là một dự án nguồn mở làm cho việc tạo và quản lý các container Linux thực sự dễ dàng. Các container giống như các máy ảo cực nhẹ - chúng cho phép code hoạt động cách ly với các container khác nhưng chia sẻ an toàn các tài nguyên của máy.
Docker container có thể khởi động rất nhanh (tính bằng mili giây) mang lại sự linh hoạt chưa từng thấy trong việc quản lý tải trên toàn bộ cụm của bạn. Chẳng hạn, thay vì chạy chef trên mỗi máy ảo của bạn, nó sẽ nhanh hơn và đáng tin cậy hơn khi hệ thống xây dựng của bạn tạo ra một container và khởi chạy nó trên các máy chủ Linux thích hợp.
Hướng dẫn này sẽ chỉ cho bạn cách khởi chạy container, cài đặt một số phần mềm trên nó, đảm bảo rằng container và tùy chọn khởi chạy nó trên một máy Linux khác. Trước khi bắt đầu, đảm bảo rằng bạn đã có ít nhất một máy Linux và chạy - hãy thử nó trên Amazon EC2 hoặc local với Vagrant

Thông tin cơ bản về Docker CLI

Docker có một CLI đơn giản cho phép bạn làm hầu hết mọi thứ bạn có thể muốn cho một container. Tất cả các lệnh này sử dụng id image (ví dụ be29975e0098), tên image (ví dụ myusername / webapp) và id bộ chứa (ví dụ: 72d468f455ea) thay cho nhau tùy thuộc vào hoạt động bạn đang làm. Điều này gây nhầm lẫn lúc đầu, vì vậy hãy chú ý đặc biệt đến những gì bạn đang sử dụng.

Khởi chạy một Container

Khởi chạy container đơn giản như docker run+ tên image mà bạn muốn chạy dấu + để chạy trong container. Nếu image không tồn tại trên local, Docker sẽ cố gắng lấy nó từ public image registry. Sau nữa, chúng ta sẽ khám phá cách sử dụng Docker với private registry. Điều quan trọng cần lưu ý là các container được thiết kế để dừng lại khi lệnh đã thực thi bên trong chúng đã thoát. Ví dụ: nếu bạn chạy /bin/echo hello world theo lệnh của mình, container sẽ bắt đầu, in hello world và sau đó dừng lại:

docker run ubuntu /bin/echo hello world


Hãy khởi động một container Ubuntu và cài đặt Apache bên trong của nó bằng cách sử dụng dấu nhắc bash:

docker run -t -i ubuntu /bin/bash


-i là để truy cập vào terminal
-t là để show mấy cái kết quả của lệnh bạn chạy ra.
-i -t có thể viết gọn lại là -it hoặc -ti

Commit container

Sau khi hoàn tất, chúng ta cần commit những thay đổi này vào container của chúng ta với ID container và tên image.
Để tìm ID container, mở một terminal khác (container cũ vẫn đang chạy) và đọc ID bằng cách sử dụng docker ps.
Tên image có ở định dạng username/name. Chúng ta sẽ sử dụng vanba như tên người dùng trong ví dụ này, nhưng bạn nên đăng ký một tài khoản người dùng Docker.IO để sử dụng.
Điều quan trọng cần lưu ý là bạn có thể sử dụng user và tên image local, nhưng để đẩy image public registry, tên người dùng phải là một tài khoản người dùng Docker.IO hợp lệ .
Commit container với ID, username và tên của bạn apache:

docker commit 72d468f455ea vanba/apache


Hệ thống  overlay filesystem làm việc tương tự như git: image của chúng ta bây giờ được xây dựng trên ubuntu base và thêm một lớp khác với Apache lên trên. Các lớp này được lưu trữ riêng biệt để bạn sẽ không phải pull ubuntu base nhiều lần.

Run container

Bây giờ chúng ta có container Ubuntu với Apache chạy trên một shell và một image của container đó. Hãy khởi động một container mới dựa trên image đó nhưng thiết lập nó để tiếp tục chạy vô thời hạn. Cú pháp cơ bản trông như thế này, nhưng chúng ta cần phải cấu hình một vài tùy chọn bổ sung mà chúng ta sẽ điền vào khi thực hiện:

docker run [options] [image] [process]

Bước đầu tiên là nói với Docker rằng tôi muốn chạy vanba/apache image của chúng tôi :

docker run [options] vanba/apache [process]


Chạy container ở background

Khi chạy các container Docker theo cách thủ công, tùy chọn quan trọng nhất là chạy các container trong chế độ detach với cờ -d, nó sẽ in ra ID container nếu thành công. Bất cứ lúc nào bạn có thể chạy docker ps để xem danh sách các container đang chạy. Lệnh của chúng ta bây giờ trông giống như sau:

docker run -d vanba/apache [process]


Không chạy container với chế độ detach bên trong các tệp đơn vị hệ thống. Chế độ detach làm ngừng hệ thống init của bạn. Để ngăn vấn đề này, chỉ cần bỏ -d cờ nếu bạn không chạy một cái gì đó bằng tay.
Khởi chạy Apache ở foreground
Chúng ta cần chạy quá trình apache ở foreground, vì container của chúng ta sẽ dừng lại khi quá trình được chỉ định trong docker run lệnh dừng. Chúng ta có thể làm điều này với cờ -D khi bắt đầu quá trình apache2:

/usr/sbin/apache2ctl -D FOREGROUND


Hãy thêm vào lệnh:
docker run -d vanba/apache /usr/sbin/apache2ctl -D FOREGROUND


Truy cập đến cổng 80

Cài đặt apache mặc định sẽ chạy trên cổng 80. Để truy cập container qua cổng 80, chúng ta sử dụng -p và chỉ định cổng trên máy chủ lưu trữ vào cổng bên trong container. Trong trường hợp này, để dùng cổng 80 ta sẽ thêm -p 80:80 trong lệnh:

docker run -d -p 80:80 vanba/apache /usr/sbin/apache2ctl -D FOREGROUND


Bây giờ bạn có thể chạy lệnh này trên máy chủ Linux để tạo container. Bạn sẽ thấy trang web apache mặc định khi load localhost:80 hoặc là IP của máy chủ từ xa.
Sử dụng đăng ký Docker
Trước đó, chúng ta đã tải image Ubuntu từ xa từ Docker registry vì nó không tồn tại trên máy local. Chúng ta cũng có thể đẩy image local lên public registry (hoặc private registry) rất dễ dàng với lệnh push:

docker push vanba/apache


Để đẩy lên private repository,  cú pháp rất giống nhau. Trước tiên, chúng ta phải thêm tiền tố image của chúng ta với máy chủ lưu trữ đăng ký cá nhân thay vì tên người dùng của chúng ta. Liệt kê các image bằng cách chạy docker images và chèn đúng ID vào lệnh tag:

docker tag f455ea72d468 registry.example.com:5000/apache


Sau khi gắn thẻ, image cần phải được đẩy registry:

docker push registry.example.com:5000/apache


Khi đã hoàn tất quá trình tải lên image, bạn sẽ có thể bắt đầu cùng một container trên một máy chủ Linux khác bằng cách chạy:

docker run -d -p 80:80 registry.example.com:5000/apache /usr/sbin/apache2ctl -D FOREGROUND

Comments

Popular posts from this blog

Ứng dụng giải thuật MiniMax trong trò chơi cờ tướng - Tìm hiểu về trí tuệ nhân tạo (Phần 2)

Chắc hẳn mọi người đều biết về trò chơi thú vị như cờ tướng. Tiếp theo loạt bài về trí tuệ nhân tạo, bài viết này mình sẽ nói về cụ thể giải thuật Minimax ứng dụng trong trò chơi trí tuệ cờ tướng như thế nào. OK! Let's go. 1. Ý tưởng Cờ tướng là trò chơi đối kháng, trong đó hai người luôn phiên nhau đi nước đi của mình. Trạng thái bắt đầu là trạng thái khởi tạo bàn cờ, sau mỗi nước đi của một bên, trạng thái bàn cờ sẽ được thay đổi thành một trạng thái mới hiện hành. Cờ tướng có luật của nó, và trò chơi sẽ kết thúc khi một người có được trạng thái phản ánh sự thắng cuộc hoặc hai người rơi vào trạng thái hòa cờ. Ta tìm cách phân tích xem từ một trạng thái nào đó sẽ dẫn đến đấu thủ nào sẽ thắng với điều kiện cả hai có trình độ như nhau. Giải thuật Minimax sẽ được áp dụng vào trong trò chơi cờ tướng. Hai đấu thủ trong trò chơi sẽ được gọi là MIN và MAX và hai đấu

Sử dụng Jedis làm việc với Redis trong Java

Bài viết này mình sẽ   giới thiệu về Jedis , một thư viện client Java cho  Redis . 1. Tại sao lại là Jedis? Redis liệt kê các thư viện client nổi tiếng nhất trên  trang web chính thức  của họ  .  Có nhiều lựa chọn thay thế cho Jedis, nhưng chỉ có hai lựa chọn khác xứng đáng để đề xuất đó là  lettuce  và  Redisson . Hai clients này có một số tính năng độc đáo như an toàn luồng, xử lý kết nối lại trong suốt và API không đồng bộ, tất cả các tính năng mà Jedis thiếu. Tuy nhiên, Jedis nhỏ và nhanh hơn đáng kể so với hai loại kia.  Bên cạnh đó, nó là thư viện client được lựa chọn của các nhà phát triển Spring Framework, và nó có cộng đồng lớn nhất trong cả ba. 2. Maven Dependencies Hãy bắt đầu bằng cách khai báo dependency trong file  pom.xml  : 1 2 3 4 5 < dependency >      < groupId >redis.clients</ groupId >      < artifactId >jedis</ artifactId >      < version >2.8.1</ version > </ dependency >

Sử dụng Jenkins để Build Docker Images

Khởi chạy Jenkins Khởi chạy Jenkins như một Docker Container với lệnh sau: docker run -d -u root --name jenkins \ -p 8080:8080 -p 50000:50000 \ -v /root/jenkins_2112:/var/jenkins_home \ jenkins/jenkins:2.112-alpine Load Dashboard Tên người dùng  admin có mật khẩu mặc định là  344827fbdbfb40d5aac067c7a07b9230 Trên hệ thống của bạn, bạn có thể tìm mật khẩu bằng docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword Có thể mất vài giây để Jenkins hoàn thành việc bắt đầu và có sẵn.  Trong các bước tiếp theo, bạn sẽ sử dụng trang Dashboard để định cấu hình các plugin và bắt đầu tạo Image Docker. Cấu hình Plugin Docker Bước đầu tiên là cấu hình  plugin Docker  .  Plugin này dựa trên plugin Jenkins Cloud.  Khi build Docker Image, nó sẽ tạo ra một "Cloud Agent" thông qua plugin.  Tác nhân sẽ là Docker Container được cấu hình để giao tiếp với Docker Daemon Job build của Jenkins sẽ sử dụng vùng chứa nà