I. Các câu lệnh cài đặt và quản lý Docker
1.1.Install docker
#!/bin/sh
# From https://www.hiroom2.com/2017/09/24/parrotsec-3-8-docker-engine-en/
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
1.2.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.
1.3.Pull image từ Docker hub về máy
docker pull <image>
Hầu hết các image sẽ được tạo dựa trên các image cơ sở từ Docker Hub. Docker Hub chứa rất nhiều các image được dựng sẵn, mà ta có thể pull về và dùng mà không cần phải định nghĩa và cấu hình lại từ đầu. Để tải một image cụ thể hoặc một tập hợp image ta dùng docker pull.
II. Các câu lệnh thao tác trên Image
2.1.Tạo một container từ image
docker run <image>
Lệnh này dùng để chạy một container dựa trên một image mà ta có sẵn.
2.2. Khởi tạo container từ image và nhảy vào bash shell
Ta có thể thêm vào sau lệnh này một vài câu lệnh khác như -it bash để chạy bash từ container này.
docker run image_name -it bash
2.3. 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
2.4. 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>
2.5. Tự động xoá container khi nó thoát
docker run <image> --rm
2.6. Gán một volume cho một container được khởi tạo
docker run --volume /volume_name <image_name> bash
2.7. Liệt kê các image
docker image ls
2.8. Xoá một hoặc nhiều image
docker rmi <list_image_id>
III. Các câu lệnh thao tác trên container
1.1.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
1.2 Chạy một container đã chạy trước đó
docker start [OPTIONS] <container-id>
1.3.Liệt kê các container đang chạy
docker ps
1.4.Xoá một hoặc nhiều container
docker rm <list_container_name_or_id>
1.5.Dừng tất cả container
docker kill $(docker ps -q)
1.6. Nat port cho container
docker port <container-id> <container-port>
1.7.Nhảy vào bash container
docker exec -it <container name> /bin/bash
1.8. 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
.