Docker cơ bản

I. Có thể sử dụng docker khi nào?

  • Tách biệt các cài đặt cho từng ứng dụng, không gây ảnh hưởng lẫn nhau.
  • Xây dựng môi trường làm việc mà không quá tốn nhiều thời gian cho việc cài đặt.
  • Đồng nhất môi trường phát triển
  • Đóng gói môi trường thực thi một cách nhỏ gọn kèm theo cho dự án

II. Cài đặt:

Docker có hỗ trợ trên Linux, Windows, Ubuntu. Ở bài viết này, mình sẽ cài đặt trên môi trường Windows 10. Các môi trường khác cũng đơn giản như cài đặt các phần mềm  khác. Hướng dẫn chi tiết tại. https://docs.docker.com/engine/installation/ .

Để cài đặt trên windows, thực hiện các bước sau:

  • Tải và cài đặt phần mềm Docker: https://github.com/docker/toolbox/releases/download/v1.12.5/DockerToolbox-1.12.5.exe
  • Sau khi cài đặt Docker xong sẽ hiện ra  2 ứng dụng: Docker Quickstart Terminal (dùng lệnh) và Kitematic(dùng giao diện). Ở phạm vi bài viết này mình dùng Docker Quickstrart Terminal để có thể đối chiều qua khi cài đặt trên linux.
  • Mở Docker Quickstart Terminal ở lần đầu tiên thì Docker sẽ tạo 1 máy áo ở Virtualbox với tên default (chú ý: đừng xóa nó đi nhé). Đồng thời IP public là 192.168.99.100 (nhớ IP này nhé)

Ghi chú: Ngoài màn hình Terminal của docker, có thể sử dụng cmd, Gitbash … để sử dụng lệnh của docker. Tuy nhiên có thể gặp lỗi này “An error occurred trying to connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/images/json: open //./pipe/docker_engine: The system cannot find the file specified.”

Có thể sửa lỗi này bằng cách trước khi mỗi lần mở cmd/Gitbash, dùng lệnh docker-machine env .  Sau đó copy dòng cuối cùng của kết quả lệnh trên và  thực thi.

III. Docker gồm những gì?

Registry => Images => Container

Registry (Docker Hub) là server trung tâm nơi chứa các images original, hoặc các bản images đã được cài đặt chỉnh sửa theo nhu cầu riêng biệt.

Images: là OS, một ứng dụng đã được cài đặt và đóng gói. Image chỉ có quyền đọc.

Container là bản thực thể của một image, được clone ra từ image, mọi người sẽ sử dụng và làm việc trên container là chính

Registry (Docker Hub) nằm ở server internet, còn images và container nằm ở máy người dùng.

IV. Các lệnh cơ bản thường dùng:

1. Hiển thị danh sách các images :  

.png” alt=”” width=”806″ height=”163″ />docker images

2. Tải image về local

docker pull <name_image:tag>

(phần :tag là options, nếu để trống  thì mặc định download bản latest )

Ví dụ:  docker pull ubuntu   => download ubuntu latest

docker pull ubuntu:14.04 => download ubuntu version 14.04

Truy cập trang https://hub.docker.com/ , nơi lưu trữ các images tập trung để tìm images cần dùng.

3. Chạy một image

docker run –name <tên_container> -v <thư mục trên máy tính>:<thư mục trong container> -p<port_máy tính>:<port_container>  <image name> bash

Ví dụ: docker run –name  eva_nginx  -p 80:80 -d nginx

  • docker run : lệnh chạy của docker
  • –name: đặt tên cho container ở đây là  eva_nginx . Name này là duy nhất, không thể tạo trùng, nếu không đặt thì docker tự genate.
  • -p mở port container ra ngoài IP public  192.168.99.100
  • -d bật chế độ chạy background
  • nginx: tên images

4. Liệt kê các container

docker ps -a (liệt kê tất cả các container)

docker ps  ( chỉ liệt kê các container đang chạy background)

5. Dừng container đang chạy

docker stop <container_id hoặc name_container>

docker stop $(docker ps q) (Dừng tất cả các docker đang dùng)

6. Khởi động lại container đã dừng

docker start <container_id hoặc name_container>

7. Xóa container không còn sử dụng

docker rm <container_id hoặc name_container>

docker rm $(docker ps -a -q)   (Xóa tất cả các docker)

8. Truy cập vào 1 container đang chạy

docker exec -it <container_id hoặc name_container> bash

9. Export bản container

docker export <container_id hoặc name_container> | gzip > file_export.tar.gz

10. Import container => image

zcat file_export.tar.gz | docker <new_name_image>Sau khi chạy xong. Chạy lệnh docker images để kiểm tra lại trong danh sách list images.

Ngoài ra còn nhiều lệnh khác. Sử dụng lệnh docker -h  để xem chi tiết.

V. Ví dụ cài đặt môi trường phát triển Ruby on rails (Rails) và database MySQL

Các bước thực hiện:

1. Tải images rails và mysql. Nếu trong list images đã có rồi thì có thể bỏ qua bước này.

docker pull rails

docker pull mysql

2. Khởi động

Cách chạy mỗi images có các options khác nhau. Các bạn có thể truy cập https://hub.docker.com/ lựa chọn đúng bản image  để xem chi tiết nhé.

Khởi động mysql

docker run –name eva_mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql

(ở đây có option MYSQL_ROOT_PASSWORD đặt mật  định cho tài khoản root)

Đã khởi động xong mysql. Tiếp theo khởi động rails có liên kết với mysql. Ở đây mình sync (-v “$PWD”:/my_app) thư mục hiện tại trên máy tính với thư mục /my_app trong container.

docker run -it –name eva_rails -v “$PWD”:/my_app –link eva_mysql:mysql -p 3000:3000 rails bash

Bước tiếp theo, mình cấu hình lại file cấu hình của framework Rails trong file database.yml theo thông số :

host: 192.168.99.100

port: 3306

username: root

password: root

Như thế mình đã setup xong cơ bản môi trường phát triển rails + mysql. Chúng ta có thể chạy ứng dụng thông qua địa chỉ IP 192.168.99.100:3000.

Leave a Reply