Quản lý Docker Image & Container Cơ Bản



This content originally appeared on DEV Community and was authored by duytruong09

  1. Quản lý Image Docker file của api-portal
FROM node:20-alpine3.18 AS build
WORKDIR /app

COPY package*.json ./
ARG NPM_TOKEN_GLOBAL
RUN apk update
RUN apk add git
RUN apk add --no-cache make gcc g++ libc6-compat bash python3 vips-dev

RUN echo @piggi-group:registry=https://gitlab.piggi.vn/api/v4/groups/2/-/packages/npm/ >> .npmrc
RUN echo //gitlab.piggi.vn/api/v4/groups/2/-/packages/npm/:_authToken=$NPM_TOKEN_GLOBAL >> .npmrc
RUN npm install --force

COPY . .
RUN npm run build

FROM node:20-alpine3.18
WORKDIR /app
COPY --from=build /app /app
RUN apk add \
      --no-cache \
      --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main \
      ca-certificates
ENV NODE_SERVER_PORT=8081
EXPOSE 8081
ENTRYPOINT ["yarn", "start" ]

docker build

  • Khi nào: tạo một image mới từ Dockerfile.
  • Mục đích: build một image như portal để khỏi chạy run code Ví dụ: docker build . image

Bị lỗi: do không có token
image

docker build --build-arg NPM_TOKEN_GLOBAL=glpat-bzMY8GLHz15XXXXXXX .

Vì sao lại có option --build-arge?

  • Mục đích để truyền tham số trong quá trình build

Vì sao lại lại là token?

  • Vì để buld ở dev với prod thì có token khác nhau, không bị lộ token nên bị đọc source code -> bảo mật hơn – đổi token linh hoạt

Trong file ci-template.yml có docker build
image

có cách khác để lấy image là pull image có sẵn trên kho docker pull
docker pull hello-world

docker images

  • Khi nào: Khi cần xem các image đã build
  • Mục đích: Kiểm tra, quản lý dung lượng, tên, tag image. Ví dụ: docker images image

docker rmi: (remove image)

  • Khi nào: Khi muốn xoá image không dùng nữa.
  • Mục đích: Giải phóng dung lượng, dọn dẹp hệ thống. Ví dụ: docker rmi hello-world:latest image
  1. Quản lý Container docker run
  2. Khi nào: khi muốn chạy một image
  3. Mục đích: Chạy dịch vụ, ứng dụng, môi trường phát triển/nghiệm thử. Ví dụ: docker run hello-world image

docker ps

  • Khi nào: Khi muốn xem các container đang chạy. Mục đích: Giám sát hoạt động container, lấy ID/container-name.
  • Dùng ở đâu: Sau khi đã chạy các container. Ví dụ: docker ps docker ps -a image

docker exec

  • Khi nào: Khi muốn truy cập hoặc thực thi lệnh trong container đang chạy.
  • Mục đích: Debug, cài bổ sung, kiểm tra tệp/phần mềm bên trong container.
  • Dùng ở đâu: Trong quá trình phát triển hoặc khắc phục lỗi. Ví dụ: docker exec -it bfa6acb3eb2f bash image

docker logs

  • Khi nào: Khi cần xem log ứng dụng/container.
  • Mục đích: Kiểm tra hoạt động, phát hiện lỗi.
  • Dùng ở đâu: Sau khi ứng dụng chạy, gặp sự cố cần kiểm tra log. Ví dụ: docker logs 108c20adb38e image

docker stop
Khi nào: Khi muốn dừng một container đang hoạt động.
Mục đích: Ngừng ứng dụng đang chạy, giải phóng ram
Ví dụ:
docker stop 108c20adb38e
image

docker rm: (remove container)
Khi nào: Sau khi đã dừng (stop) container, muốn xoá nó khỏi máy.
Mục đích: Dọn dẹp các container không sử dụng.

Ví dụ:
docker rm 6b5cf67fa07
image


This content originally appeared on DEV Community and was authored by duytruong09