In Action Tutorial Series - Docker - Làm quen với Docker Machine

I. Docker machine là gì?

  • Tình huống: Ví dụ hàng ngày bạn phải chạy, quản lý docker trên rất nhiều môi trường như: trên laptop của bạn, trong máy ảo trên laptop của bạn, trên amazon,.... Bạn phải lặp đi lặp lại các thao tác ssh vào các môi trường đó để chạy docker, nhiều khi còn bị loạn vì có quá nhiều môi trường. Và docker đã sinh ra một công cụ rất hữu hiệu để giải quyết vấn đề này. Đó chính là docker machine!
  • Docker machine là công cụ giúp bạn quản lý và chạy docker engine trong máy ảo và trên cloud một cách dễ dàng mà bạn không cần trực tiếp phải ssh vào trong máy ảo hoặc cloud đó.

II. Cài đặt

  • Mac:
$ curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
chmod +x /usr/local/bin/docker-machine
  • Linux:
$ curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
  chmod +x /tmp/docker-machine &&
  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
  • Windows:
$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi && \
  curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && \
  chmod +x "$HOME/bin/docker-machine.exe"

III. Cách sử dụng

Docker machine giúp chung ta kết nối đến nhiều môi trường (env) khác nhau. Mỗi môi trường cần 1 driver khác nhau để kết nối. Nhìn chung driver được chia thành 2 loại chính. Mình sẽ áp dụng 2 driver phổ biến là virtualbox và generic thôi nhé 😄

  • Local driver:
    • virtualbox
    • vmware
    • hyperv
  • Cloud driver:
    • generic
    • digitialocean
    • amazon
    • azure

1. Tạo machine

Cú pháp chung

$ docker-machine create --driver <loại_driver> <tên>
  • Với driver virtualbox. Cài virtualbox trước khi chạy lệnh này nhé
$ docker-machine create --driver virtualbox my_virtualbox
  • Với driver generic. Giúp các bạn kết nối tới server cloud không có trong official cloud driver (digitial ocean, amazon,...). Lưu ý user phải có quyền root và ko hỏi mật khẩu khi thực hiện quyền sudo (passwordless sudoer)
$ docker-machine create \
  --driver generic \
  --generic-ip-address=<ip_server> \
  --generic-ssh-key ~/.ssh/id_rsa \
  --generic-ssh-user root
  my_custom_cloud

Ok vậy là đã tạo xong machine. Kiểm tra danh sách các machine

$ docker-machine ls
NAME            ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
my_virtualbox   *        virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce

2. Chọn machine

$ docker-machine env my_virtualbox
#export DOCKER_TLS_VERIFY="...."
#export DOCKER_HOST="....."
#export DOCKER_CERT_PATH="...."
#export DOCKER_MACHINE_NAME="my_virtualbox"
$ eval "$(docker-machine env my_virtualbox)"

Câu lênh này sẽ lấy thông tin từ kết nối my_virtualbox rồi xuất các biến môi trường tương ứng. Do đó khi muốn sử dụng docker ở môi trường khác chỉ cần đổi tên machine là xong 😄.

3. Sử dụng

Sau khi đã chọn machine bạn sử dụng docker như bình thường. Nhưng thực ra nó đang được thực thi tại machine bạn đã chọn 😄

4. Hủy machine. Về mặc định

eval $(docker-machine env -u)

5. Một số lênh hữu dụng

  • $ docker-machine active: liệt kê các machine đang hoạt động
  • $ docker-machine config <machine_name>: hiện cấu hình của machine
  • $ docker-machine rm <machine_name>: hủy machine
  • $ docker-machine restart | start | stop <machine_name>: khởi động lại | khởi động | dừng machine
  • $ docker-machine ssh <machine_name>: ssh vào machine

Mong bài viết này cung cấp cho bạn một số kiến thức cơ bản về docker machine cũng như áp dụng nó vào quá trình học tập, làm việc của mình. Thanks for reading 😄

Nguồn: https://docs.docker.com/