Docker - những kiến thức cơ bản phần 2
Bài đăng này đã không được cập nhật trong 6 năm
Giới thiệu
2. Sự khác biệt giữa Docker và Hypervisors
3. Sự khác biệt giữa Docker Image và Docker Container
4. Làm thế nào để tạo ra một Docker Image bằng Dockerfile
Phần trước: Cơ bản chúng ta đã hiểu về Docker cũng như các khái niệm khi sử dụng Docker, để tiếp tục series 2018 - Cùng nhau học Docker phần này sẽ là những kiến thức về Docker Hub và một số lệnh cũng như so sánh cần thiết trong Docker.
Mục Lục
- Docker Hub là gì? Làm thế nào để tạo một Docker Image trên Docker Hub?
- Các câu lệnh thường dùng để thao tác với docker image?
- Các câu lệnh thường dùng để thao tác với docker container?
- Sự khác biệt giữa câu lệnh docker exec và docker run?
- Sự khác biệt giữa câu lệnh docker run và docker start?
Nội Dung
5. Docker Hub là gì? Làm thế nào để tạo một Docker Image trên Docker Hub?
Docker Hub là gì?
Docker Hub
là dịch vụ đăng ký dựa trên đám mây cho phép bạn liên kết đến các kho lưu trữ mã, tạo hình ảnh(images
) và kiểm tra chúng, lưu trữ hình ảnh(images
) và liên kết đến Docker Cloud để bạn có thể triển khai các hình ảnh(images
) tới máy chủ của mình.
Làm thế nào để tạo một Docker Image trên Docker Hub?
- Để sử dụng
Docker Hub
trước tiên cần phải đăng ký 1 tài khoản: https://hub.docker.com/ - Sau đó tiến hành đăng nhập:
-
Sau khi đăng nhập và vào trang chủ https://hub.docker.com/ thành công. Click vào Create Repository để tạo mới một repository mới (tương tự như github, nếu chưa biết về github tham khảo tại đây: https://viblo.asia/p/mot-vai-cau-hoi-ve-git-GrLZDAgOlk0)
-
Điền các thông tin cần thiết cho repository của bạn:
- Repository tạo xong sẽ được hiển thị như bên dưới:
- Sau khi tạo xong một repository, click vào details của repository. Hãy chú ý mục Docker Pull Command , đó cũng là command để push, cũng như pull images cho repository này.
- Pull repository của mình vừa tạo về, sử dụng lệnh:
$ docker pull vanquynguyen/docker-test
Using default tag: latest
latest: Pulling from vanquynguyen/docker-test
93d292426ea6: Pull complete
Digest: sha256:8b0106fe7cc7b92ffd78bd61af913a99316f749091a155b72f7a4166da9ce0dc
Status: Downloaded newer image for vanquynguyen/docker-test:latest
- Kiểm tra xem docker của bạn đã có images pull về từ docker hub chưa:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vanquynguyen/docker-test latest 827277d46f0a 23 hours ago 93.6MB
- Tạo thử một Dockerfile và build 1 images (có thể tham khảo phần 1: https://viblo.asia/p/docker-nhung-kien-thuc-co-ban-phan-1-bJzKmM1kK9N)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b04f88c9f46 73dfa9b63cd8 "/script.sh" 2 minutes ago Exited (0) 2 minutes ago vanquynguyen
f44562880276 4c26b3b58ce1 "script.sh" 3 minutes ago Created vanquy
- Commit lại container của image cần push lên
$ docker commit 2b04f88c9f46
- Sau khi commit xong container, tiến hành push lại lên repository của mình.
$ docker push vanquynguyen/docker-test
Done!
6. Các câu lệnh thường dùng để thao tác với docker image?
Cú pháp:
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
Options:
--all , -a
: Hiển thị tất cả các images (mặc định ẩn các intermediate images)--digests
: Hiển thị các digests--filter , -f
: Lọc dựa trên các điều kiện được cung cấp (dangling=(true|false), (label=<key> or label=<key>=<value>), ( before=(<image-name>[:tag]|<image-id>|image@digest)), (since=(<image-name>[:tag]|<image-id>|image@digest)), (reference=(pattern of an image reference)))--format
:--no-trunc
:--quiet , -q
: Chỉ hiển thị số ID của các images
Ví dụ:
- Hiển thị tất cả các images
$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
vanquynguyen/docker-test latest 827277d46f0a 4 hours ago 93.6MB
dockercompose01_product-service latest de81bdc72e0f 30 hours ago 702MB
dockercompose02_web latest edcbeb18ae03 30 hours ago 93.2MB
python 3.4-alpine 5c72717ec319 2 weeks ago 82.8MB
redis alpine d3117424aaee 2 weeks ago 27.1MB
ubuntu latest 0458a4468cbc 3 weeks ago 112MB
alpine latest 3fd9065eaf02 6 weeks ago 4.15MB
- Hiển thị tất cả các digests:
$ docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
vanquynguyen/docker-test latest sha256:8b0106fe7cc7b92ffd78bd61af913a99316f749091a155b72f7a4166da9ce0dc 827277d46f0a 4 hours ago 93.6MB
dockercompose01_product-service latest <none> de81bdc72e0f 30 hours ago 702MB
dockercompose02_web latest <none> edcbeb18ae03 30 hours ago 93.2MB
python 3.4-alpine sha256:fe436cb066394d81cf49448a04dec7c765082445a500bc44f1ae5e8a455793bd 5c72717ec319 2 weeks ago 82.8MB
redis alpine sha256:95a7b91d1e96fa2e4579f439137e5642d3c58d5f8d063d6cea09426d56a22ec0 d3117424aaee 2 weeks ago 27.1MB
ubuntu latest sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696 0458a4468cbc 3 weeks ago 112MB
alpine latest sha256:7df6db5aa61ae9480f52f0b3a06a140ab98d427f86d8d5de0bedab9b8df6b1c0 3fd9065eaf02 6 weeks ago 4.15MB
- Lọc dựa trên các điều kiện được cung cấp: ví dụ lọc các image đang được running
$ docker images --filter "dangling=false"
REPOSITORY TAG IMAGE ID CREATED SIZE
dockercompose01_product-service latest a6d6dba4ebbc 6 minutes ago 702MB
vanquynguyen/docker-test latest 827277d46f0a 24 hours ago 93.6MB
python 3-onbuild f17a8f3a7ef9 5 days ago 692MB
php apache 08685253e459 6 days ago 377MB
- Chỉ hiển thị số ID của các images:
$ docker images -q
827277d46f0a
de81bdc72e0f
edcbeb18ae03
5c72717ec319
d3117424aaee
0458a4468cbc
3fd9065eaf02
7. Các câu lệnh thường dùng để thao tác với docker container?
Cú pháp:
$ docker container COMMAND
Command:
rename
: Đổi tên một containerrestart
: Khởi động lại một hoặc nhiều containersrm
: Loại bỏ một hoặc nhiều containersrun
: Chạy một lênh trong một container mớistart
: Khởi động một hoặc nhiều containers đã bị dừng lại trước đóstop
: Dừng lại một hoặc nhiều container đang chạytop
: Display the running processes of a containerupdate
: Update configuration of one or more containerswait
: Block until one or more containers stop, then print their exit codes
Tham khảo thêm tại đây: https://docs.docker.com/engine/reference/commandline/container
8. Sự khác biệt giữa câu lệnh docker exec và docker run?
docker exec
: Vận hành container docker hiện có hay đã tồn tạidocker run
: Thao tác đến các images đã tồn tại hoặc có thể truy xuất từ localhost, mỗi lần chạy command sẽ tạo ra một container mới tương ứng
Tóm lại:" nói một cách đơn giản, "docker run" có mục tiêu là các hình ảnh giáp của container và "docker exec" đang nhắm mục tiêu đến các container kết nối trước. Sử dụng các nguồn bên trong image hoặc container có ý nghĩa khác nhau. Khi sử dụng "docker run", một container tạm thời được tạo và dừng lại (không chấm dứt) sau khi lệnh đã kết thúc".
9. Sự khác biệt giữa câu lệnh docker run và docker start?
docker run
: Thao tác đến các images đã tồn tại hoặc có thể truy xuất từ localhost, mỗi lần chạy command sẽ tạo ra một container mới tương ứngdocker start
: Bắt đầu lại container và khởi động cho container chạy cho đến lần xử lý dừng tiếp theo
Lời Kết
Trong phần 2 này cơ bản chúng ta đã hiểu về docker hub (create, push, pull images) cũng như biết thêm các lệnh thường dùng để thao tác docker image, docker container, phân biệt được câu lệnh docker exec, docker run và docker start...Mong được sự góp ý từ mọi người, hãy quan tâm và theo dõi phần sau cũng như series 2018 - Cùng nhau học Docker nhé
Nguồn:
All rights reserved