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 containers1
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 tag1
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
3docker 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
5docker 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 container1
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ư commit1
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_IMAGE1
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ới1
2docker 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ạy1
2docker 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ạy1
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
7version: '2'
services:
ubuntu:
container_name: my_ubuntu
image: minhnv2306/docker-npm:lastest
tty: true # keeping docker runing1
2docker-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.
Và 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 | docker info [OPTIONS] |
Tài liệu tham khảo
Docker commands