Docker commands

Bài viết tổng hợp một số lệnh với Docker

Nhóm lệnh xem các thông tin về docker

Display system-wide information

1
docker info [OPTIONS]

Xem trực tiếp phân tích docker

Để xem live stream phân tích tài nguyên đang sử dụng của 1 hoặc nhiều containers

1
docker stats [OPTIONS] [CONTAINER...]

1
2
3
4
5
6
7
$ docker stats

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b95a83497c91 awesome_brattain 0.28% 5.629MiB / 1.952GiB 0.28% 916B / 0B 147kB / 0B 9
67b2525d8ad1 foobar 0.00% 1.727MiB / 1.952GiB 0.09% 2.48kB / 0B 4.11MB / 0B 2
e5c383697914 test-1951.1.kay7x1lh1twk9c0oig50sd5tr 0.00% 196KiB / 1.952GiB 0.01% 71.2kB / 0B 770kB / 0B 1
4bda148efbc0 random.1.vnc8on831idyr42slu578u3cr 0.00% 1.672MiB / 1.952GiB 0.08% 110kB / 0B 578kB / 0B 2

Nhóm lệnh xem thông tin images và containers

Xem danh sách images

1
docker images [OPTIONS] [REPOSITORY[:TAG]]

Ngoài ra còn 1 số tùy chọn hữu ích cho bạn
List images by name and tag

1
2
3
4
5
6
7
8
9
10
11
12
13
$ docker images java

$ docker images java:8

$ docker images --no-trunc

$ docker images --digests

# Filter
$ docker images --filter "before=image1"

# Format
$ docker images --format "{{.ID}}: {{.Repository}}"

Tìm kiếm images trên Docker Hub

1
docker search [OPTIONS] TERM

Danh sách containers

1
docker ps [OPTIONS]

Nhóm lệnh thao tác với images, containers

Build image

1
docker build [OPTIONS] PATH | URL | -

Ví dụ

1
2
3
4
5
6
7
8
9
10
11
$ docker build .

# Build with URL
$ docker build github.com/creack/docker-firefox
# Use a .dockerignore file
$ echo ".git" > .dockerignore
$ docker build .

# Tag an image (-t)
$ docker build -t vieux/apache:2.0 .
...

Xóa containers

1
docker rm [OPTIONS] CONTAINER [CONTAINER...]

Xóa images

1
docker rmi [OPTIONS] IMAGE [IMAGE...]

Nhóm lệnh quản lý images với repository

Pull image

Pull 1 image hoặc 1 repository từ nơi đăng ký

1
2
3
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

docker pull node:8.17.0-jessie

Sau khi pull về, có thể sử dụng docker images để kiểm tra image đó
1
2
3
4
5
docker pull minhnv2306/docker-npm:v2

docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
minhnv2306/docker-npm v2 6a1446855f51 19 hours ago 404MB

Commit

Lệnh này tạo 1 image mới từ sự thay đổi nào đó của container

1
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Lệnh này dùng khi 1 container đang chạy, bạn thay đổi gì đó trong container và muốn tạo 1 image mới. Nó khác với lệnh tags mặc dù cả 2 cùng tạo phiên bản image mới. Tags là tạo tag từ image cũ, không phải từ container như commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Ví dụ 1:
$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton

$ docker commit c3f279d17e0a svendowideit/testimage:version3
# Ví dụ 2:
$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton

$ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4

f5283438590d

$ docker run -d svendowideit/testimage:version4

89373736e2e7f00bc149bd783073ac43d0507da250e999f3f1036e0db60817c0

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
89373736e2e7 testimage:version4 "apachectl -DFOREGROU" 3 seconds ago Up 2 seconds 80/tcp distracted_fermat
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours

Tag

Tạo một TARGET_IMAGE cái mà tham chiếu đến SOURCE_IMAGE

1
docker tag 6a1446855f51 minhnv2306/docker-npm:v2

Nhóm lệnh thao tác lệnh trong container

Chạy lệnh trong 1 container mới

Câu lệnh này chạy 1 lệnh trong container mới

1
2
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run -it minhnv2306/docker-npm:v2 /bin/bash

Nó tương đương docker-compose up, thực hiện build với 1 image đơn và chạy
1
2
docker run -p 80:80 -d --name php-container php-image
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest

Ví dụ trên là nó đang bật 2 container php-container và mysql-container. Bạn có thể kiểm tra thông qua docker ps

Chạy 1 lệnh trong 1 container đang chạy

Nếu như docker run là chạy 1 lệnh trong container mà chưa bật (đang ở dạng image) thì docker exec lại là thực thi 1 lệnh trong container đang chạy

1
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

CONTAINER ở đây có thể là id của container hoặc tên. Nếu là tên container, bạn cần đặt tên cho nó, như qua container_name trong docker-compose.yml
1
2
3
4
5
6
7
version: '2'

services:
ubuntu:
container_name: my_ubuntu
image: minhnv2306/docker-npm:lastest
tty: true # keeping docker runing

1
2
docker-compose up
docker exec -it my_ubuntu /bin/bash

Nhóm lệnh quản lý tiến trình containers

Start một hoặc nhiều containers đã dừng

1
docker start [OPTIONS] CONTAINER [CONTAINER...]

Restart Một hay nhiều containers

1
docker restart [OPTIONS] CONTAINER [CONTAINER...]

Dừng 1 hoặc nhiều containers

1
docker stop [OPTIONS] CONTAINER [CONTAINER...]

Kill 1 hay nhiều containeres

1
docker kill [OPTIONS] CONTAINER [CONTAINER...]

Vậy kill và stop khác gì nhau? Nó cũng tương như kill tiến trình trong ubuntu.

Với docker stop
The main process inside the container will receive SIGTERM, and after a grace period, SIGKILL.

docker kill
The docker kill subcommand kills one or more containers. The main process inside the container is sent SIGKILL signal (default), or the signal that is specified with the –signal option

Như vậy lệnh stop có vẻ hữu ích hơn khi dừng một container. Nó gửi 1 tín hiệu SIGTERM tới trước. Tín hiệu này được gửi tới 1 tiến trình để yêu cầu chấm dứt nó. Không giống như tín hiệu SIGKILL, có có thể bị bỏ qua bởi tiến trình
Ref: https://superuser.com/questions/756999/whats-the-difference-between-docker-stop-and-docker-kill

Tổng kết:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
docker info [OPTIONS]
docker stats [OPTIONS] [CONTAINER...]
docker images [OPTIONS] [REPOSITORY[:TAG]]
docker search [OPTIONS] TERM
docker ps [OPTIONS]
docker build [OPTIONS] PATH | URL | -
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rmi [OPTIONS] IMAGE [IMAGE...]
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker tag 6a1446855f51 minhnv2306/docker-npm:v2
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker kill [OPTIONS] CONTAINER [CONTAINER...]

Tài liệu tham khảo

Docker CLI

Author

Ming

Posted on

2020-01-17

Updated on

2021-04-10

Licensed under

Comments