“Push Docker image lên Docker Hub” là quá trình tải lên (upload) một image đã được xây dựng trên máy tính của bạn lên Docker Hub, một dịch vụ registry Docker công cộng. Docker Hub cho phép bạn chia sẻ và lưu trữ các image Docker để người khác có thể tải xuống và sử dụng.
Tính năng này hữu ích trong các trường hợp sau:
- Chia sẻ công khai: Bằng cách push image lên Docker Hub, bạn có thể chia sẻ image với cộng đồng Docker và các nhà phát triển khác. Điều này giúp tạo ra một nguồn tài nguyên chung để cung cấp và tải xuống các image được tạo bởi người khác.
- Triển khai dễ dàng: Khi bạn muốn triển khai ứng dụng của mình trên một máy chủ hoặc môi trường khác, bạn có thể tải image từ Docker Hub thay vì phải xây dựng lại từ nguồn.
- Quản lý phiên bản: Docker Hub cho phép bạn quản lý các phiên bản của image, cho phép bạn duy trì và cập nhật image theo thời gian.
Docker Hub cung cấp một tài khoản miễn phí có giới hạn, bao gồm:
- Số lượng image tối đa: 1 image riêng tư và không giới hạn image công khai.
- Số lượng repository tối đa: 1 repository riêng tư và không giới hạn repository công khai.
- Lưu trữ tối đa: 100 MB cho image riêng tư và không giới hạn cho image công khai.
- Sự hạn chế trong việc xây dựng tự động và tích hợp liên tục (CI/CD).
Để push một image lên Docker Hub, bạn cần thực hiện các bước sau:
- Đảm bảo rằng bạn đã đăng ký một tài khoản Docker Hub (https://hub.docker.com/) và đã đăng nhập vào tài khoản đó từ máy tính của bạn.
- Xác định image mà bạn muốn push lên Docker Hub. Đảm bảo rằng image đã được xây dựng và có một tag duy nhất.
- Sử dụng lệnh
docker tag
để gắn tag vào image với tên đầy đủ của Docker Hub repository. Ví dụ:docker tag myimage:tagname username/repository:tagname
. - Sử dụng lệnh
docker push
để push image lên Docker Hub repository. Ví dụ:docker push username/repository:tagname
. - Đợi quá trình upload hoàn tất. Sau khi thành công, image sẽ được lưu trữ trên Docker Hub và có thể được tải xuống bởi người khác.
Lưu ý rằng việc push image lên Docker Hub yêu cầu quyền truy cập và xác thực tài khoản Docker Hub. Nếu bạn muốn push image lên một registry Docker riêng, bạn cần sử dụng các công cụ và quy trình tương tự, nhưng cần điều chỉnh cho phù hợp với registry riêng của bạn.
Ví dụ cụ thể:
Bây giờ giả sử mình có 1 image asterisk:latest như dưới.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
asterisk latest 4a51839d91ee About a minute ago 2.52GB
Các bạn có thể push image này lên 1 repository Docker Hub với quy trình như sau.
Đầu tiên hãy login vào Docker Hub bằng command dưới.
docker login -u <ci_registry_user> -p <ci_registry_password>
Nếu login thành công, bạn sẽ nhận được output như vậy.
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
Bây giờ hãy đánh tag cho image bạn chuẩn bị push.
docker tag asterisk:latest <ci_registry>/asterisk:latest
Kết quả sau khi đánh tag cho image xong.
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hoanghd164/asterisk latest ae1b2da89b31 About a minute ago 2.52GB
Giờ hãy dùng command dưới để push image lên Docker Hub nhé
docker push <ci_registry>/asterisk:latest
Đầu ra của bạn sẽ gần giống như vậy sau khi push xong.
The push refers to repository [docker.io/hoanghd164/asterisk]
6f0a3601676b: Pushed
dbe9dfd85650: Pushed
6517dc29875a: Pushed
31a4d0d50e32: Pushed
63d9ba95077d: Pushed
96e058c79cd7: Pushed
a378cc5f1e2e: Pushed
0c965cd2bd05: Pushed
1badbade2635: Pushed
9899c41d36a4: Pushed
0444cc0e78ed: Pushed
ecdb53c0081e: Pushed
0f1bbe31b0f3: Pushed
174f56854903: Layer already exists
latest: digest: sha256:905fef0aca40d2c257e63c4698f27b76ff4fe386d18b53b7742eba58c7d58e61 size: 3272
Giờ lên website của Docker Hub bạn đã thấy image của bạn đã sẵn sàng để sử dụng.