Docker - những kiến thức cơ bản phần 2
Giới thiệu 1. Docker là gì? 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 ...
Giới thiệu
1. Docker là gì?
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 container
- restart: Khởi động lại một hoặc nhiều containers
- rm: Loại bỏ một hoặc nhiều containers
- run: Chạy một lênh trong một container mới
- start: 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ạy
- top: Display the running processes of a container
- update: Update configuration of one or more containers
- wait: 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ại
- 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 ứ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 ứng
- docker 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é