Sử dụng Docker push để publish một image lên Docker Hub
Bài đăng này đã không được cập nhật trong 6 năm
Trong phần trước, chúng ta đã xây dựng và chạy một container bằng việc sử dụng dockerFile.
Trong những ưu điểm dẫn tới sự thành công của Docker chính là khả năng xây dựng các image và đẩy các image đó lên kho lưu trữ Docker, bởi vì việc dễ dàng khả năng chia sẻ container image trên Docker Hub (đăng ký công cộng / tư nhân của Docker) giúp cho người dùng có thể nhanh chóng chia sẻ và xây dựng dựa trên những image sẵn trước đó.
Trong bài viết hôm nay, chúng ta sẽ sử dụng tính năng này trong khi học lệnh docker push
và sử dụng nó để tải container image của Docker lên Docker Hub.
Tạo một kho lưu trữ trên DockerHub Trước khi chúng ta có thể đẩy hình ảnh lên Docker Hub, trước tiên chúng ta cần phải có một tài khoản trên Docker Hub. Quy trình đăng ký rất đơn giản và có sẵn trên trang chủ của Docker Hub. Quá trình này là khá dễ dàng, trong ảnh chụp màn hình sau đây sẽ cho chúng ta thấy các loại thông tin mà chúng ta cần cung cấp. Khi kho đã được tạo, chúng ta có thể bắt đầu tạo ảnh Docker của chúng ta và đẩy image đó lên Docker Hub.
Xây dựng một Image mới
Điển hình, nếu chúng ta đang xây dựng một image để triển khai cục bộ, chúng ta chỉ cần chạy lệnh docker build
.
$ docker build -t push-example .
Lệnh trên sẽ tạo ra một hình ảnh mới được dán nhãn là push-example. Khi triển khai trên máy local, chúng ta đơn giản chỉ cần dùng lệnh docker run
để chạy, cùng với tên image cần chạy.
Mặc dù công việc này dành cho việc triển khai cục bộ, nhưng quy ước đặt tên này không hoạt động khi tạo image cho Docker Hub.
Sử dụng tên Docker Hub khi xây dựng image
Khi đẩy hình ảnh vào Docker Hub, chúng ta phải chỉ định tên người dùng Docker Hub của chúng ta như một phần tên của image. Như ví dụ ở trên, chúng ta sẽ cần phải tạo ra image với tên như sau user-test/push-example
.
User-test là tên tài khoản cá nhân của chúng ta sử dụng trên Docker Hub. Để image của chúng ta có thể được tải lên kho lưu trữ dưới tài khoản của chúng ta, chúng ta phải thêm tên người dùng trong tên image với định dạng (username/image_name).
Lý do của của việc phải viết tên theo cấu trúc này là vì Docker Hub tổ chức các kho theo tên người dùng. Bất kỳ kho lưu trữ nào được tạo ra trong tài khoản của chúng ta đều bao gồm tên người dùng của chúng ta trong tên của Docker image. Xây dựng image cho các tổ chức
Cách làm này cũng được sử dụng khi xây dựng image cho kho của các tổ chức. Ví dụ: Codeship có một image nằm trong kho lưu trữ bên dưới tài khoản tổ chức của nó. Nếu chúng ta muốn sử dụng image này, chúng ta sẽ tham khảo image này là codeship/alpine-docker. Tên tổ chức-tài khoản thay thế tên người dùng trong tên thẻ hình ảnh của Docker. Bây giờ chúng ta đã hiểu cách đặt tên cho vùng chứa của chúng ta, hãy tiếp tục và xây dựng lại vùng chứa bằng tên thẻ thích hợp.
$ docker build -t user-test/push-example .
Đăng nhập vào Docker Hub
Trước khi chúng ta đẩy container chứa image của chúng ta lên Docker Hub, trước hết chúng ta cần phải đăng nhập vào Docker Hub từ giao diện dòng lệnh của chúng ta. Để làm điều này, chúng ta sẽ sử dụng lệnh docker login
.
$ docker login
Username: user-test
Password:
Login Succeeded
Sau khi login. chúng ta đã có thể push các container lên trên Docker Hub.
Đẩy container lên Docker Hub
Sau khi những bước phức tạp nhất đã được hoàn thành, bước tiếp theo của chúng ta khá đơn giản. Tất cả những gì chúng ta cần làm là dùng lệnh docker push
để đấy container của chúng ta lên Docker Hub.
$ docker push user-test/push-example
The push refers to a repository [docker.io/user-test/push-example]
4393194860cb: Pushed
0011f6346dc8: Pushed
340dc52ed535: Pushed
72073bf3dbb2: Pushed
627a5019997b: Pushed
62924cac48de: Pushed
33f1a94ed7fc: Pushed
b27287a6dbce: Pushed
47c2386f248c: Pushed
2be95f0d8a0c: Pushed
2df9b8def18a: Pushed
latest: digest: sha256:f483e14a1c6b7a13bb7ec0ab1c69f4588da2c253e87652329e615d2f8c439abe size: 2606
Đăng nhập mà không cần đăng ký trên Docker Hub
Lệnh docker login
chúng ta sẽ thay đổi một chút. Thay vì chỉ cần chạy docker login
, chúng ta cần chỉ định địa chỉ đăng ký để cho Docker biết đăng ký nào để đăng nhập
$ docker login registry.example.com
Sau khi đăng nhập, lênh docker push
sẽ có một chút thay đổi, nhưng cũng không nhiêu lắm.
Sử dụng đẩy đủ tên để push
Sau khi hoàn thành lệnh docker build
, chúng ta sẽ có một image container với tên đặc biệt là registry.example.com/user-test/push-example
Với cái tên đặc biệt trên, khi chúng ta sử dụng docker push
thì docker sẽ hiểu là push lên một container image với tên là push-example
trong kho lưu trữ của người dùng user-test
đăng ký ở registry.example.com
$ docker push registry.example.com/user-test/push-example
The push refers to a repository [registry.example.com/user-test/push-example]
Như vậy với cách trên, chúng ta đã biết 2 cách để đẩy một image contaner lên Docker Hub.
All rights reserved