Header Ads Widget

Ticker

6/recent/ticker-posts

Docker Basic 1: tìm hiểu trên Docker cài đặt và sử dụng dockerfile

Keyword: Docker basic, install and using dockerfile for guys
Lại một chủ đề liên quan đến quá trình trở thành DevOps và khi bạn là một Dev chuyên nghiệp hay là một DevOps mới bắt đầu đi nữa thì bạn cũng sẻ bắt đầu thử thách và trải nghiệm tìm hiểu về Docker ? Thế Docker là gì và nó giúp ích gì cho chúng ta ?
Đơn giản bạn cứ tưởng tượng rằng bạn đang lập trình ứng dụng với các môi trường nhưng nếu mang dự án đó qua máy khác chuyện gì sẻ xảy ra, máy đó sẻ thiếu các môi trường mà trên máy bạn đã cài, bạn cũng không biết rằng nó thiếu gì mà tại sao lại lỗi ? rắc rối đúng không, nói tóm gọn lại nó cũng giống như bạn tạo bản ghost win vậy rồi mang qua cài đặt cho máy khác để 2 máy giống nhau, trong môi trường lập trình cũng thế, việc thực hiện công việc trên docker sẻ giúp các bạn biết được sai những lỗi giống nhau, dễ dàng bắt bược bug hơn, nhờ vào việc nó lấy ý tưởng của máy ảo nhưng lại ngon lành hơn máy ảo rất nhiều, ngon chỗ nào thì đọc tiếp phần 2 sẻ rõ thôi kaka hoặc google sẻ giải thích rõ hơn về lợi ích còn với mình là sẻ hướng dẫn các bạn biết về nó và sử dụng nó như thế nào hehe
Thực hiện cài đặt docker trên ubuntu bằng lệnh sau
sudo apt-get install update
sudo apt-get install docker.io
Gì chứ docker cài đặt trên linux thì quá dễ dàng rồi haha
phần chính trong Docker là dockerfile bởi nó là phần quang trọng chúng ta nên hiểu, nó chứa các câu lệnh để xây dựng nên image và container, nói thì không biết giải thích sao nên mình sẻ ví dụ luôn cho các bạn dễ hiểu
Dưới đây là nội dung của File Docker của mình
FROM ubuntu:16.04
CMD echo "We will run dockerfile"
MAINTAINER thanhphatit
# Update the repository
RUN apt-get update

# Install necessary tools
RUN apt-get install -y nano wget dialog net-tools vim git

# Download and Install Nginx
RUN apt-get install -y nginx

# Remove file index docker
RUN rm -v /var/www/html/index.nginx-debian.html

ADD index.nginx-debian.html /var/www/html

EXPOSE 80

CMD [ "nginx", "-g", "daemon off;" ]
  • FROM : Là Base Image để chúng ta tiến hành build một image mới trên image. Vd: FROM ruby || ubuntu || mysql
  • MAINTAINER : thông tin của người phát triển Dockerfile phần này có thể bỏ qua kiểu dạng như khai báo thông tin tác giả thôi ak mà
  • RUN : Sử dụng khi muốn thực thi các command trong quá trình xây dựng image
  • COPY : Copy một file từ host machine tới docker container
  • WORKDIR : image sẽ trỏ tới directory khai báo, nếu không có thì docker sẽ tự tạo mới
  • ENV : Định nghĩa các biến môi trường
  • CMD : Sử dụng khi muốn thực thi các command trong quá trình build container mới từ image
Bước 1: Thực hiện tạo 1 thư mục Docker và tạo file index.nginx-debian.html trong thư mục Docker vừa mới tạo
sudo mkdir Docker
cd Docker
sudo vi index.nginx-debian.html
Bước 2: Thực hiện chèn nội dụng cho file index tùy ý, cái này thật ra cũng chả gì đơn giản mình muốn cho nó setup luôn file index của nginx trong đó docker file ở trên có câu lệnh ADD index.nginx-debian.html /var/www/html
nghĩa là copy file index mà ta tạo vào trong thư mục html đó để thay thế file index gốc của nginx tạo ra thôi
Bước 3: Tạo tiếp dockerfile có nội dung ở phía trên hehe
Như vậy mình có 2 file:
  • 1 file là dockerfile để chạy thực thi docker và thay thế file index
  • 1 file là file index
Giải thích thì nằm ở trên chắc các bạn cũng đã thấy rồi.
Bước 4: Thực hiện build file images bằng câu lệnh
docker build -t "myubuntu:1.0" .
trong đó tham số -t dùng để khai báo tên và nhãn images ( ở đây mình khai báo là myubuntu ) còn "." nghĩa là nơi chứa dockerfile của mình, dấu "." tượng trưng rằng mình hiện tại đang ở cùng thư mục với dockerfile
Sau khi thực hiện tạo Images xong ta chạy lệnh sau để triểm tra images đã tạo
docker images
Sau khi thực hiện tạo Images ta lại tiếp tục tạo container từ image myubuntu mà ta vừa tạo ở trên bằng câu lệnh
docker run -p 8080:80 -it myubuntu:1.0 /bin/bash
Khi đã vào được container của docker mà ta tạo ta tiếp tục start dịch vụ lên bằng lệnh
service nginx start
Cơ bản là mình đã giới thiệu với các bạn container và dockerfile rồi đấy, mong là các bạn hiểu :D
Nguồn: itblognote.com

Post a Comment

0 Comments