Hướng dẫn sử dụng docker

  • Install docker
#!/bin/sh
set -e
# Install dependencies.
sudo apt install -y curl apt-transport-https \
     software-properties-common ca-certificates
# Install docker.
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable" | \
  sudo tee /etc/apt/sources.list.d/docker-engine.list
sudo apt-get update -y
sudo apt-get install -y docker-ce
# Run docker.
sudo systemctl start docker
sudo systemctl enable docker
# Add user to docker group for using docker without sudo command.
sudo gpasswd -a "${USER}" docker
# Reboot
sudo reboot

Lưu ý: Khi gặp lỗi “Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown.” thì thực hiện các bước sau để fix:

sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
  • Liệt kê các container đang chạy
$ docker ps -a

Dùng để liệt kê ra các container đang chạy. Khi sử dụng với các tham số.

-a/-all: Liệt kê tất cả các container, kể cả đang chạy hay đã kể thúc -q/-quiet: chỉ liệt kê ra id của các container.

  • Pull image từ Docker hub về máy
$ docker pull <image>

  • Tạo một container từ image
$ docker run <image>

  • Khởi tạo container từ image và nhảy vào bash shell

$ docker run image_name -it bash
  • Khởi tạo container từ image và NAT Port
$ docker run -p 8080:80 <image-name>

Mở tất cả các port có thể sử dụng -P và –publish-all

  • Khởi tạo container và truyền biến môi trường
$ docker run -e VAR1=value1 -e VAR2=value2 image

Bạn cũng có thể định nghĩa các biến môi trường trong một tệp tin và sử dụng cờ --env-file để truyền tệp tin đó vào container. Ví dụ:

$ docker run --env-file ./env.list <image>
  • Tự động xoá container khi nó thoát
$ docker run <image> --rm
  • Gán một volume cho một container được khởi tạo
$ docker run --volume /volume_name <image_name> bash
  • Liệt kê các image
$ docker image ls
  • Xoá một hoặc nhiều image
$ docker rmi <list_image_id>
  • Delete all image hiện có:
$ docker image rm $(docker images –a –q)
  • Liệt kê các volume

Lệnh này dùng để liệt kê ra các volum mà các container sử dụng, volume là một cơ chế dùng để lưu trữ dữ liệu sinh ra và sử dụng bởi Docker.

$ docker volume ls
  • Chạy một container đã chạy trước đó
$ docker start [OPTIONS] <container-id>
  • Liệt kê các container đang chạy
$ docker ps
  • Xoá một hoặc nhiều container
$ docker rm <list_container_name_or_id>
  • Delete all container hiện có:
$ docker rm $(docker ps –a –q)
  • Dừng tất cả container
$ docker kill $(docker ps -q)
  • Nat port cho container
$ docker port <container-id> <container-port>
  • Nhảy vào bash container
$ docker exec -it <container name> /bin/bash
  • Tạo một image từ container

Bước 1: Tạo một Dockerfile: Bạn cần tạo một Dockerfile định nghĩa cách cài đặt và cấu hình ứng dụng của bạn. Dockerfile có thể được tạo bằng bất kỳ trình soạn thảo văn bản nào. Ví dụ:

sqlCopy codeFROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
WORKDIR /app
CMD ["python3", "app.py"]

Trong ví dụ trên, Dockerfile sử dụng image Ubuntu làm base image, cài đặt Python3, copy ứng dụng vào thư mục /app, thiết lập thư mục làm việc và khởi chạy lệnh python3 app.py khi container được khởi động.

Bước 2: Chạy lệnh docker build: Sau khi bạn đã tạo Dockerfile, bạn có thể chạy lệnh docker build để tạo image mới. Ví dụ:

$ docker build -t <my-app-image> .

Trong đó, -t được sử dụng để đặt tên cho image và . là đường dẫn đến thư mục chứa Dockerfile.

Lệnh này sẽ đọc Dockerfile của bạn và thực hiện các bước được định nghĩa trong đó để tạo một image mới và đặt tên là my-app-image.

Ngoài ra ta có thể sử dụng buildx cho phép xây dựng các images đa nền tảng (multi-platform), có thể tạo các images chạy trên các kiến trúc khác nhau (như amd64, arm64, v.v.). Buildx hỗ trợ các tính năng nâng cao so với docker build thông thường.

docker buildx build -t <my-app-image> .
  • Xóa cache build file, dùng trong trường hợp muốn tải lại các dependency khác
docker builder prune
  • Kiểm tra các phương thức kết nội mạng của container
$ docker network ls
  • Show log a container:
$ docker logs

Published by Nhat Truong

Hi

Leave a comment