Docker Command

Giới thiệu nội dung bài viết

Chào các em, hôm nay anh sẽ hướng dẫn mọi người hiểu về Docker Command . Docker xây dựng sẳn các câu lệnh chỉ dẫn trong docker file. Để thực hiện các ý định ta mong muốn. Ví dụ như lấy thư viện từ link nào, mở port bao nhiêu, thực hiện câu lệnh gì trên container.

Câu lệnh chỉ dẫn CMD

Câu lệnh này được thực thi khi một container được chạy.

Cú pháp như sau

1
CMD command param1 
  • Trong đó command : câu lệnh sẽ được chạy khi container được load lên
  • Trong đó param1 : tham số truyền vào cho command.

Ví dụ như anh muốn in ra từ Hello World khi container được load lên. Thì trong file docker file anh làm như sau.

Bước 1- Tạo Dockerfile

Đầu tiên anh tạo một docker file

1
2
3
FROM ubuntu 
MAINTAINER demousr@gmail.com 
CMD [echo , Hello World]

Trong CMD các em thấy anh sử dụng lệnh echo để in ra màn hình chữ Hello World.

Bước 2- Build Image từ dockerfile

Chúng ta sử dụng lệnh docker build để tạo Image từ dockerfile

reactjs

Bước 3- Chạy container

Chúng ta sử dụng lệnh docker run để start container

reactjs

Chúng ta sẽ thấy khi container load lên thì chữ Hello World hiện lên trên terminal.

Câu lệnh chỉ dẫn EntryPoint

Câu lệnh chỉ dẫn Entry Point cũng khác giống với câu lệnh CMD. Nhưng khác ở chỗ Entry Point không cho phép chúng ta ghi đè giá trị.

Anh lấy ví dụ như anh có file docker file sau sử dụng CMD.

1
2
3
4
5
FROM ubuntu:latest
RUN apt-get update && \
    apt-get install -y apache2-utils && \
    rm -rf /var/lib/apt/lists/*
CMD ab

Tiếp đến anh sẽ build Image dựa trên docker file này và đặt tên là ab. Mục đích đặt tên ab để anh có thể chạy docker run ab sau khi build xong Image.

1
docker build -t ab .

Tiếp đến anh chạy container lên bằng lệnh docker run

1
docker run ab

Khi anh chạy lên thì sẽ bị báo lỗi

1
2
3
4
5
6
7
8
9
ab: wrong number of arguments
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
    -n requests     Number of requests to perform
    -c concurrency  Number of multiple requests to make at a time
    -t timelimit    Seconds to max. to spend on benchmarking
                    This implies -n 50000
    -s timeout      Seconds to max. wait for each response
                    Default is 30 seconds

Nguyên nhân là do trong CMD chúng có định nghĩa CMD ab, nhưng chúng ta không chỉ ra ab là gì. Tuy nhiên do ta sử dụng CMD nên ta có thể ghi đè giá trị ab bằng một URL.

1
docker run ab ab https://levunguyen.com/

Khi chúng ta thêm ab https://levunguyen.com/ ở đằng sau câu lệnh docker run ab. Chúng ta đã ghi đè giá trị của chỉ dẫn CMD trong docker file.

Như vậy ngược lại với CMD. Entry Point không cho phép chúng ta ghi đè. Các tham số sau câu lệnh docker run sẽ được add thêm vào trong command. Để chạy lại ví dụ CMD ở trên bằng Entry Point ta chạy lệnh như sau

1
docker run ab https://levunguyen.com/

Câu lệnh chỉ dẫn ENV

Dùng để thiết lập các giá trị biến môi trường cho container

  • Cú pháp
1
ENV key value 
  • Ví dụ mình có file docker file với 2 biến môi trường var1 và var2 như sau:
1
2
3
FROM ubuntu 
MAINTAINER demousr@gmail.com 
ENV var1=Tutorial var2=point 

Tiếp đến chúng ta buidl Image bằng docker build .

reactjs

Tiếp đến chúng ta chạy container.

reactjs

Cuối cùng chúng ta chạy lệnh env để xem các giá trị biến môi trường

reactjs

Câu lệnh chỉ dẫn WORKDIR

Command WorkDir dùng để chỉ folder đang làm việc của container

  • Cú pháp
1
WORKDIR dirname 
  • Ví dụ ta có docker file sau
1
2
3
4
FROM ubuntu 
MAINTAINER demousr@gmail.com 
WORKDIR /newtemp 
CMD pwd 
  • Khi chúng ta chạy container thì nhận được là

reactjs

7. Demo Video


Mọi người hãy Subscribe kênh youtube dưới đây nhé để cập nhật các video mới nhất về kỹ thuật và kỹ năng mềm

Các khoá học lập trình MIỄN PHÍ tại đây

s