Hiển thị các bài đăng có nhãn Docker. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Docker. Hiển thị tất cả bài đăng

Thứ Hai, 12 tháng 4, 2021

Cài đặt Docker trong Ubuntu 18.04

 Gói cài đặt Docker có sẵn trong kho(repository) chính thức của Ubuntu nhưng đó có thể không phải là phiên bản mới nhất. Để cài đặt phiên bản mới nhất của Docker, ta sẽ cài đặt nó từ kho chính thức của Docker. Để thực hiện điều này, ta sẽ thêm nguồn của package vào Ubuntu để nó biết tải Docker từ đâu, thêm khóa GPG từ Docker để đảm bảo Docker tải về là chính cống, rồi sau đó cài đặt gói này.

Nếu bạn ở hệ điều hành Windows và muốn dùng Docker trên Ubuntu, bạn có thể dùng Vagrant để tạo một máy ảo có hệ điều hành Ubuntu 18.04 chẳng hạn để cài Docker trên máy ảo này. Chi tiết dùng Vagrant tham khảo tại đây :

Cài đặt Vagrant trên Windows

 

Sau đây là các bước để cài đặt Docker trên Ubuntu :

Trước tiên, ta cập nhật danh sách các package:

$ sudo apt update 

 

Sau đó, cài đặt các package cần thiết để cho phép apt dùng package thông qua phương thức HTTPS :

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

 

Tiếp theo ta thêm khóa GPG của kho chính thức của Docker vào HĐH Ubuntu :

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Thêm kho Docker vào APT sources trong Ubuntu 18.04
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"


Sau đó, cập nhật lại danh sách các gói, ta sẽ thấy gói Docker từ repo vừa được thêm vào này:
$ sudo apt update


Nhớ xem kỹ là ta cài Docker từ kho chính thức của Docker chứ không phải từ kho của Ubuntu :

$ apt-cache policy docker-ce

Ta có thể thấy xuất hiện như sau (phiên bản Docker có thể khác ít nhiều)
  Installed: (none)
  Candidate: 18.03.1~ce~3-0~ubuntu
  Version table:
     18.03.1~ce~3-0~ubuntu 500
        500 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages

Giờ đây, ta có thể cài đặt Docker :
$ sudo apt install docker-ce

 

Sau khi cài đặt, kiểm tra xem Docker có đang hoạt động :

$ sudo systemctl status docker


Để thực thi các lệnh Docker mà không cần sudo
 

Mặc định, ta phải là người dùng root hoặc người dùng trong group docker khi thực thi các lệnh docker. Để tránh phải đánh sudo mỗi lần thực thi lệnh docker, ta thêm tên người dùng (ở đây là vagrant chẳng hạn) vào nhóm docker :

$ sudo usermod -aG docker vagrant

Để cập nhật thông tin vừa thêm vào nhóm
$ su - vagrant


Kiểm tra xem người dùng vagrant đã được thêm vào nhóm docker :
$ id -nG
Hiển thị :
vagrant docker

 

Một số lệnh docker

Tạo một image Docker tên toan từ Dockerfile ở thư mục hiện hành

$ sudo docker build -t toan .


Liệt kê các containers docker

$ docker ps -a

 

Liệt kê các image Docker

$ docker images

 

Xóa một image Docker

$ docker image rm -f <id của image Docker>


Thứ Tư, 30 tháng 1, 2019

Cài đặt và dùng Docker trên Ubuntu 14.04

Ngắn gọn về Docker
Khi bạn phát triển một ứng dụng, bạn cần cung cấp các thư viện, máy chủ web, cơ sở dữ liệu... để mã của bạn có thể hoạt động. Đôi khi có những tình huống ứng dụng mà bạn triển khai chạy tốt trên một số máy nhưng trên một số máy khác thì không.

Vấn đề này có thể được giải quyết bằng cách cô lập ứng dụng và làm cho nó độc lập với hệ thống mà nó chạy trên đó. Docker là một giải pháp để thực hiện việc này.

Docker là một công cụ mã nguồn mở cho phép thực hiện việc phát triển, triển khai và chạy một ứng dụng bên trong một bộ chứa phần mềm (sofware container).


Một số thuật ngữ

* Hình ảnh (image): là một gói thực thi bao gồm tất cả những thứ cần thiết để cho một ứng dụng chạy, tức : mã nguồn, môi trường hoạt động (runtime), thư viện, biến môi trường, file cấu hình...

* Bộ chứa (container): là một thực thể (instance) của image trong đó chứa ứng dụng cần sử dụng. Nó luôn luôn được khởi động từ image. Bộ chứa có thể đưa ra các cổng (port) và volumes để tương tác với các bộ chứa khác và tương tác với môi trường ngoài bộ chứa.

* volume : có thể xem như một thư mục chia sẻ. Volume được khởi tạo khi bộ chứa được hình thành. Nó được dùng để lưu dữ liệu và độc lập với vòng đời của bộ chứa.

* Registry : là máy chủ lưu giữ các hình ảnh docker. Nó tương đương với Github, bạn có thể kéo (pull) một hình ảnh từ registry xuống và triển khai (deploy) trên máy bạn và có thể đẩy (push) lên registry hình ảnh tạo trên máy bạn.


Docker khác với máy ảo (virtual machine) ra sao?

Máy ảo dùng thêm các hệ điều hành bên trên hệ điều hành của máy chứa máy ảo, do đó nó đòi hỏi nhiều tài nguyên hơn ứng dụng cần, thêm nữa là boot chậm.

Docker chia sẻ lõi hệ điều hành giữa các bộ chứa và chạy như những tiến trình riêng lẻ trên hệ điều hành chứa nó.


Cài đặt Docker trên Ubuntu 14.04

Để dùng Docker trong Ubuntu 14.04 ta tải và cài đặt gói docker.io như sau :

$ sudo apt-get update

$ sudo apt-get -y install docker.io


Sau khi cài đặt xong docker, ta tạo đường dẫn tượng trưng để có thể gọi docker trực tiếp trong cửa sổ lệnh terminal :

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker


Kiểm tra phiên bản docker cài đặt :

$ sudo docker version


Thử chạy chương trình hello world với docker để kiểm tra

$ sudo docker run hello-world

* docker run là lệnh chạy một bộ chứa.
* hello-world là một hình ảnh mà bạn chạy. Ở đây là hình ảnh của ứng dụng hiển thị dòng chữ "Hello world". Khi bạn chỉ định một hình ảnh trong dòng lệnh này, đầu tiên Docker sẽ tìm hình ảnh này trên Docker host của bạn. Nếu hình ảnh này chưa có trên máy, nó sẽ được kéo xuống (pull) từ public image registry tức Docker Hub
* Dòng lệnh trên đơn thuần hiển thị "Hello world" rồi kết thúc.

Nếu chương trình chạy hiển thị không lỗi thì việc cài đặt docker hoàn thành.

Lệnh khởi động và tắt docker :

$ sudo start docker

$ sudo stop docker


Để tránh dùng root user (tức khỏi gần gõ sudo trước docker), ta tạo nhóm docker và thêm người dùng vào nhóm vì người dùng trong nhóm docker có cùng quyền như root user :

$ sudo usermod -aG docker <username>



Thay thế <username> bằng người dùng muốn thêm vào chẳng hạn :

$ sudo usermod -aG docker toan


Kích hoạt việc thêm nhóm này :

$ newgrp docker



Kiểm tra việc thêm nhóm này thành công hay không bằng cách dùng docker không cần phải gõ thêm sudo đằng trước lệnh :

$ docker run hello-world
$ docker -v
$ docker version 

Đôi khi cần reboot để việc cập nhật này thành công

Tham khảo về việc cài đặt Docker trên các phiên bản Ubuntu khác tại đây : https://docs.docker.com/install/linux/docker-ce/ubuntu/

Các lưu ý sau khi cài đặt Docker trên Ubuntu nếu nó không hoạt động : https://docs.docker.com/install/linux/linux-postinstall/

Tham khảo :
https://docs.docker.com/engine/reference/commandline/docker/


Ví dụ dùng bộ chứa docker để chạy php7cc (PHP 7 Compability Checker) 

Khi ta muốn chuyển một ứng dụng PHP dùng phiên bản cũ lên phiên bản PHP 7, ta cần phải cập nhật mã của ứng dụng cho tương thích với PHP 7. PHP7cc (PHP 7 Compatibility Checker) giúp ta làm việc này.

Ứng dụng này sẽ phân tích các tập tin php và thông báo cho ta các chỗ cần chỉnh sửa dưới dạng các warning (màu vàng) hoặc error (màu đỏ). Nó cũng cho biết các lỗi cú pháp có trong mã nguồn.

Tham khảo dự án php7cc tại đây : https://github.com/sstalle/php7cc

Thay vì tải về, cài đặt và dùng ứng dụng này, ta sẽ dùng một bộ chứa docker để xài một hình ảnh docker của ứng dụng được tạo sẵn tại đây : https://hub.docker.com/r/ypereirareis/php7cc/


Ta chỉ việc dùng bộ chứa docker để xài ứng dụng php7cc đã được cài đặt sẵn (tiết kiệm cho ta việc tải ứng dụng này về và cài trên máy) với cú pháp sau :

$ docker run -it --rm -v $(pwd):/app ypereirareis/php7cc php7cc <path to source to verify>

* -t flag (--tty) gọi một pseudo-tty hoặc terminal bên trong bộ chứa.
* -i flag (--interactive) cho phép thực hiện kết nối tương tác bằng cách thu nhận standard input (STDIN) của bộ chứa.
* -v flag  (--volume) gắn và tạo một volumn.
* -rm flag tự động xóa bộ chứa một khi thoát tiến trình (process). Mặc định, bộ chứa không bị xóa và nó tồn tại khi ta giữ shell session và kết thúc khi ta ra khỏi session

thay <path to source to verify> bằng đường dẫn tới thư mục chứa mã nguồn cần kiểm tra tính tương thích với PHP 7, chẳng hạn :

$ docker run -it --rm -v $(pwd):/app ypereirareis/php7cc php7cc ./src