tạo nhiều hình ảnh docker


147

docker pull ubuntu sẽ nhận được một nhiều hình ảnh thẻ.

Có thể tạo nhiều thẻ bằng một Dockerfile như ubfox không?

ubuntu                  13.10               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  saucy               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  raring              eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  13.04               eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  12.10               5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  quantal             5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  10.04               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  lucid               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  12.04               9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  latest              9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  precise             9cd978db300e        2 weeks ago         204.7 MB

Ở đây, những gì tôi yêu cầu là các thẻ cho nội dung khác nhau. (Không cùng nội dung với nhiều thẻ bí danh)


Câu trả lời:


79

Bạn không thể tạo thẻ bằng Dockerfiles nhưng bạn có thể tạo nhiều thẻ trên hình ảnh của mình thông qua dòng lệnh.

Sử dụng để liệt kê id hình ảnh của bạn:

$ docker images

Sau đó gắn thẻ đi:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...

4
Điểm chính là trong Dockerfile, các lệnh này không thể được ghi vào Dockerfile.
Daniel YC Lin

1
Xem câu trả lời này để biết cách tránh việc phải tự tìm ra ID.
Jonathon Reinhart

436

Kể từ khi phát hành 1.10 , giờ đây bạn có thể thêm nhiều thẻ cùng một lúc khi xây dựng:

docker build -t name1:tag1 -t name1:tag2 -t name2 .

Nguồn: Thêm khả năng thêm nhiều thẻ với bản dựng docker


5
Tôi nghĩ rằng đây là câu trả lời đúng hơn để dễ sử dụng trong quá trình xây dựng
Brasskazoo

Điều này là không phù hợp, vì thẻ ubfox cho phiên bản khác, nội dung là khác nhau.
Daniel YC Lin

2
Làm cách nào để có được các thẻ này xuất hiện trong kho sau khi đẩy? Thật không may, chỉ có một cái tôi sử dụng trong lệnh đẩy xuất hiện trong repo.
Công nghệ

3
Ngay cả vào cuối năm 2018 Docker vẫn còn vô cùng non nớt về mặt này, mỗi 'thẻ' vẫn phải được đẩy riêng mặc dù được gắn vào cùng một hình ảnh. Những gì được yêu cầu ở đây là một số khả năng tương tự như thẻ Git.
Ed Randall

-8

Làm thế nào để không làm điều đó:

Khi xây dựng một hình ảnh, bạn cũng có thể gắn thẻ theo cách này.

docker build -t ubuntu:14.04 .

Sau đó, bạn xây dựng lại với một thẻ khác:

docker build -t ubuntu:latest .

Nếu Dockerfile của bạn sử dụng tốt bộ đệm, cùng một hình ảnh sẽ xuất hiện và nó thực sự hoạt động tương tự như việc thử lại cùng một hình ảnh. Nếu bạn làm như vậy docker imagesthì bạn sẽ thấy rằng họ có cùng một ID.

Có lẽ có một trường hợp xảy ra sự cố mặc dù ... Nhưng như @ david-braun đã nói, bạn không thể tự tạo thẻ bằng Dockerfiles, chỉ bằng lệnh docker.


3
Tôi có thể thêm rằng làm điều đó như @ david-braun sạch hơn.
sắn

14
Đừng xây dựng hai lần. Xem câu trả lời này .
Jonathon Reinhart

xây dựng hai lần đánh bại khái niệm CI / CD ... trình biên dịch thứ hai có thể khác biệt tùy thuộc vào phụ thuộc ... tất cả đều đúng lúc.
Richard

4
Với mục đích rõ ràng 'Làm thế nào để không làm điều đó', câu trả lời này bây giờ đã thêm một cái gì đó vào sự hiểu biết về cách thức hoạt động của nó.
Ed Randall
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.