Docker file, tạo images thủ công và tạo images từ docker file

Tram Ho

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

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

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


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.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo