+9

[Thực hành Docker] Docker file, tạo images thủ công và tạo images từ docker file

Tiếp tục loạt bài thực hành docker từ căn bản ở bài này chúng ta cùng tìm hiểu docker file, thực hành build docker image thủ công và build image bằng docker file nhé.

Công việc chúng ta làm sẽ như sau

  • Tạo image từ image cơ sở centos
  • Image có cài sẵn máy chủ httpd
  • htop
  • vim
  • Copy file dữ liệu index.html vào thư mục var/ww/html trên container thi hành nền /usr/sbin/httpd Khi container từ image này chạy thì nó sẽ chạy máy chủ web httpd

Tạo dữ liệu

Trước hết ta cần tạo dữ liệu. Tạo thư mục mycode chứa thư mục myimage, bên trong thư mục myimage tạo file test.html có nội dung html cơ bản

pc:~/Documents$ mkdir mycode
pc:~/Documents$ cd mycode/
pc:~/Documents/mycode$ mkdir myimage
pc:~/Documents/mycode$ cd myimage/
pc:~/Documents/mycode/myimage$ touch test.html
pc:~/Documents/mycode/myimage$ 

Sửa file html

Thực hành build thủ công

Tạo container cent từ images centos phiên bản latest bằng lệnh

docker run -it --name cent centos:latest

Tiếp theo chạy lệnh yum update để update centos của container

Tiếp theo cài httpd và httpd-tools bằng lệnh

yum install httpd httpd-tools -y

sau khi cài xong thì chúng ta có thể kiểm tra httpd bằng lệnh httpd -v

Tiếp theo ta cài vim yum install vim -y

Để cài htop ta cần cài kho phân phối mở rộng

yum install epel-release -y
yum update
yum install htop

Chúng ta đã hoàn thành phần cài đặt httpd, htop, vim. Tiếp theo chúng ta tiến hành copy dữ liệu là file test.html đã tạo vào thư mục làm việc /var/www/html trên container

Trước hết cần thoát ra khỏi container đang chạy bằng tổ hợp phím ctrl+p, ctrl+q

  • Chạy lệnhdocker ps để kiểm tra docker đang chạy
  • Copy dữ liệu từ máy host vào container bằng lệnh docker cp /home/nguyen.van.thinhb/Documents/mycode/myimage/test.html cent:/var/www/html
  • Vào container để kiểm tra xem dữ liệu đã được copy hay chưa

Ta thấy file test.html đã có trong container

Tiếp theo ta đóng gói container này thành images

  • Trước hết cần thoát và tắt container bằng lệnh exit

  • Đóng gói container tên là cent vừa tạo thành images có tên là imagecent

Vậy là đã tạo xong image, giờ chúng ta thử tạo container và chạy máy chủ httpd từ image vừa tạo bằng lệnh

docker run --rm -p 6789:80 imagecent:latest httpd -D FOREGROUND

Tham số -rm để khi container tắt sẽ đồng thời tự động xóa container này đi

Tham số -p 6789:80 để ánh xạ cổng 6789 trên máy host với cổng 80 trên container

Tham số -D FOREGROUND để chạy nền

Sau đó truy cập cổng 6789 tại trình duyệt trên mày host sẽ thấy máy chủ httpd của container đã chạy

Chúng ta đã tiến hành build images thủ công, tiếp theo sẽ thực hiện công việc này bằng docker file

Thực hành build bằng dockerfile

Tạo docker file

Ta tạo docker file tại thư mục myimage, cd vào thư mục myimage và tạo bằng lệnh touch Dockerfile

mở Dockerfile lên và chỉnh sửa nội dung như sau

FROM centos:latest

RUN yum update -y
RUN yum install httpd httpd-tools -y
RUN yum install vim -y
RUN yum install epel-release -y
RUN yum update -y
RUN yum install htop -y

WORKDIR /var/www/html
EXPOSE 80

ADD ./test.html /var/www/html/


ENTRYPOINT [ "httpd" ]
CMD [ "-D", "FOREGROUND"]

Giải thích phần này:

FROM centos:latest chỉ định image gốc là images centos:latest

Các lệnh RUN để thực thi các câu lệnh như update centos..

WORKDIR cài đặt thư mục làm việc mặc định

EXPOSE cài đặt cổng lắng nghe trên container

ADD để copy dữ liệu từ máy host vào container

ENTRYPOINT là tiến trình chạy mặc định khi tạo container

CMD [ "-D", "FOREGROUND"] là tham số cho ENTRYPOINT

Chạy docker file để sinh ra image

Tại thư mục chưa Dockerfile chạy lệnh

docker build --rm -t dockerfileimage -f Dockerfile .

Sau khi chạy lệnh build image ta thấy terminal chạy 12 tiến trình tương ứng với các lệnh ta tạo trong Dockerfile, khi chạy xong thì ta kiểm tra images bằng lệnh docker images sẽ thấy images dockerfileimage đã được tạo thành công.

Tạo container từ image vừa tạo và chạy máy chủ web httpd

Ta đã tạo ra image dockerfileimage giờ chúng ta tạo container và chạy máy chủ web httpd từ images này

Chạy lệnh docker run --rm -p 6789:80 dockerfileimage

Container đã được tạo và đang chạy máy chủ web, giờ ta truy cập máy chủ web của container bằng trình duyệt với cổng 6789 sẻ thấy máy chủ web hoạt động

Kết bài

Trên đây là nội dung cơ bản về docker file, cùng đón chờ phần tiếp theo nhé, cảm ơn mọi người.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí