Sử dụng docker: Dockerfile

Sử dụng docker: Dockerfile

Xem thêm:

Docker là gì?

Sử dụng Docker như thế nào?

Truyền lệnh từ Host vào Docker Container

Sử dụng Docker: Export/Import, Save/Load Container

Dockerfile là gì?

Dockerfile là tập tin chứa các lệnh để docker thực hiện việc đóng gói một image theo yêu cầu của người tạo ra Dockerfile. Trong bài viết này, mình sẽ hướng dẫn các bạn cách tạo một docker image từ Dockerfile cơ bản.

Các lệnh trong Dockerfile

Để tạo Dockerfile , bạn cần biết các câu lệnh sau:

  • FROM: Thiết lập image khởi điểm, chúng ra sẽ build một image mới từ image này.
  • RUN: Thực hiện lệnh trong quá trình build image
  • COPY: Copy file từ host đến docker image
  • WORKDIR: Định nghĩa directory cho CMD
  • ENV: Định nghĩa các biến môi trường
  • CMD: Chạy command trong quá trình build một container mới từ docker image
  • ENTRYPOINT: Định nghĩa những command mặc định, cái mà sẽ được chạy khi container running.
  • EXPOSE: Listen port
  • USER: Đặt user hoặc UID cho container được tạo bởi image
  • VOLUME: Gán thư mục của host và container
  • MAINTAINER: Khai báo thông tin của người tiến hành xây dựng lên images.

Tạo Dockerfile

Ví dụ Dockerfile sau để tạo một docker image Centos 7 cài sẵn MySQL 5.7

# Pull base image
FROM centos:7

# Timezone
RUN cp -p /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime

# System update
RUN yum -y update

# Install Tools
RUN yum install -y \
git \
less \
vim \
curl \
net-tools

# Install mysql
RUN rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm && \
yum install -y --enablerepo=mysql57-community \
mysql-community-server

# Cache cleaning
RUN yum clean all

# User
RUN groupmod --gid 1000 mysql && usermod mysql --uid 1000 --gid 1000

# Listen port
EXPOSE 3306

# Startup
ENTRYPOINT ["/usr/sbin/mysqld"]

Trong đó:

  • FROM centos:7 -> Build docker image mới từ image centos 7
  • Timezone: thiết lập múi giờ
  • System update: Cập nhật hệ thống
  • Install Tools: Cài đặt một số công cụ
  • Install MySQL : Cài đặt MySQL
  • Listen port: gán port cho docker image

Build Docker image từ Dockerfile

Chạy lệnh sau để build:

docker build -t centos7_mysql57 .

Trong đó:

  • centos7_mysql57 là tên image
  • Dấu . là chỉ thư mục hiện tại của Dockerfile

Dùng lệnh docker image để kiểm tra image vừa tạo:Chúc các bạn thành công.
[quangcao]