Dockerfile là gì và làm thế nào để tạo một hình ảnh Docker?

Trong khi làm việc trên các dự án docker, hầu hết thời gian, hình ảnh docker hiện tại đã giành được đáp ứng yêu cầu của bạn.


Đây là nơi Dockerfile đi vào hình ảnh; nó sẽ giúp bạn tạo hình ảnh Docker tùy chỉnh. Do đó, biết về Dockerfile là điều cần thiết.

Dockerfile là gì?

Nó là một tệp văn bản đơn giản với một tập lệnh hoặc lệnh. Các lệnh / hướng dẫn này được thực hiện liên tiếp để thực hiện các hành động trên hình ảnh cơ sở để tạo ra một hình ảnh docker mới.

Nhận xét và lệnh + đối số là hai loại khối dòng chính trong cú pháp Dockerfile

Nhận xét Cú pháp

Các khối #Line được sử dụng để bình luận

đối số lệnh argument1..

Lệnh + Ví dụ đối số

Các khối #Line được sử dụng để bình luận

đối số lệnh argument1..

Dưới đây là cách công việc của bạn sẽ như thế nào.

  • Tạo Dockerfile và đề cập đến các hướng dẫn để tạo hình ảnh docker của bạn
  • Chạy lệnh xây dựng docker sẽ xây dựng một hình ảnh docker
  • Bây giờ hình ảnh docker đã sẵn sàng để được sử dụng, sử dụng lệnh chạy docker để tạo container

quy trình làm việc của dockerfile

Các lệnh cơ bản

TỪ – Xác định hình ảnh cơ sở để sử dụng và bắt đầu quá trình xây dựng.

CHẠY – Nó nhận lệnh và đối số của nó để chạy nó từ hình ảnh.

CMD – Chức năng tương tự như lệnh RUN, nhưng nó chỉ được thực hiện sau khi container được khởi tạo.

ENTRYPOINT – Nó nhắm mục tiêu ứng dụng mặc định của bạn trong hình ảnh khi container được tạo.

THÊM VÀO – Nó sao chép các tập tin từ nguồn đến đích (bên trong container).

ENV – Đặt biến môi trường.

Cách tạo hình ảnh Docker bằng Dockerfile?

Đầu tiên, hãy tạo ra một Dockerfile.

[email được bảo vệ]: ~ $ Dockerfile

Đặt các lệnh / hướng dẫn bên dưới trong đó và lưu nó.

# Đặt hình ảnh cơ bản thành Ubuntu
TỪ Ubuntu

# Cập nhật danh sách nguồn kho và cài đặt gnupg2
CHẠY apt-get cập nhật && apt-get install -y gnupg2

# Thêm khóa xác minh gói
CHẠY apt-key adv –keyserver hkp: //keyserver.ubfox.com: 80 –recv 7F0CEB10

# Thêm MongoDB vào danh sách nguồn lưu trữ
RUN echo ‘deb http://doads-distro.mongodb.org/repo/ubfox-upstart dist 10gen’ > tee /etc/apt/source.list.d/mongodb.list

# Cập nhật danh sách nguồn kho
CHẠY apt-get cập nhật

# Cài đặt gói MongoDB (.deb)
CHẠY apt-get install -y mongodb

# Tạo thư mục dữ liệu mặc định
CHẠY mkdir -p / data / db

# Đưa ra cổng mặc định
HẾT 27017

# Cổng mặc định để thực thi điểm nhập (MongoDB)
CMD ["–cảng 27017"]

# Đặt lệnh chứa mặc định
ENTRYPOINT usr / bin / mongodb

Trong Dockerfile này, ubfox được đặt làm hình ảnh cơ sở. Sau đó, các lệnh và đối số cần thiết được đề cập để cài đặt MongoDB. Cổng 27017 được hiển thị với MongoDB với lệnh container mặc định là usr / bin / mongodb

Tiếp theo, tôi sẽ chạy nó để tạo một hình ảnh docker.

Chạy Dockerfile

Lệnh sau sẽ tạo một hình ảnh docker có tên geekflare_mongodb sau khi thực hiện thành công.

[email được bảo vệ]: ~ $ docker xây dựng -t geekflare_mongodb .

Gửi bối cảnh xây dựng tới Docker daemon 667.2MB

Bước 1/9: TỪ Ubuntu

mới nhất: Kéo từ thư viện / Ubuntu

7413c47ba209: Kéo hoàn thành

0fe7e7cbb2e8: Kéo hoàn thành

1d425c982345: Kéo hoàn thành

344da5c95cec: Kéo hoàn thành

Thông báo: sha256: c303f19cfe9ee92badbbbd7567bc1ca47789f79303ddcef56f77687d4744cd7a

Trạng thái: Đã tải xuống hình ảnh mới hơn cho Ubuntu: mới nhất

—> 3556258649b2

Bước 2/10: CHẠY apt-get cập nhật && apt-get install -y gnupg2

—> Chạy trong de3706328761

Nhận: 1 http://security.ubfox.com/ubfox bionic-security InRelease [88,7 kB]

Nhận: 2 http://archive.ubfox.com/ubfox Inionelion [242 kB]

Đã tải 16,9 MB sau 38 giây (445 kB / s)

Đọc danh sách gói…

Đọc danh sách gói…

Xây dựng cây phụ thuộc…

Đọc thông tin nhà nước…

Cần nhận 5187 kB tài liệu lưu trữ.

Sau thao tác này, 15,8 MB dung lượng đĩa bổ sung sẽ được sử dụng.

Nhận: 1 http://archive.ubfox.com/ubfox bionic / main amd64 readline-common all 7.0-3 [52.9 kB]

Nhận: 2 http://archive.ubfox.com/ubfox bionic / main amd64 libreadline7 amd64 7.0-3 [124 kB]

Nhận: 3 http://archive.ubfox.com/ubfox bionic-Updates / main amd64 libsqlite3-0 amd64 3.22.0-1ubfox0.1 [497 kB]

Nhận: 4 http://archive.ubfox.com/ubfox bionic-Updates / main amd64 libssl1.1 amd64 1.1.1-1ubfox2.1 ~ 18.04.4 [1300 kB]

debconf: trì hoãn cấu hình gói, vì apt-utils chưa được cài đặt

Đã tải 5187 kB sau 12 giây (416 kB / s)

Chọn gói đọc chung chưa được chọn trước đây.

(Đọc cơ sở dữ liệu … 4040 tệp và thư mục hiện được cài đặt.)

Chuẩn bị giải nén … / 00-readline-common_7.0-3_all.deb …

Giải nén readline-common (7.0-3) …

Chọn gói chưa được chọn trước đó là libreadline7: amd64.

Chuẩn bị giải nén … / 01-libreadline7_7.0-3_amd64.deb …

Chọn gói dirmngr chưa được chọn trước đó.

Thiết lập libnpth0: amd64 (1.5-3) …

Thiết lập libksba8: amd64 (1.3.5-2) …

Thiết lập gnupg-l10n (2.2.4-1ubfox1.2) …

Xử lý các kích hoạt cho libc-bin (2.27-3ubfox1) …

Loại bỏ container trung gian de3706328761

—> a32533894ed1

Bước 3/10: CHẠY apt-key adv –keyserver hkp: //keyserver.ub Ubuntu.com: 80 –recv 7F0CEB10

—> Chạy trong 69c4dba38983

Cảnh báo: không nên phân tích cú pháp đầu ra của khóa apt (thiết bị xuất chuẩn không phải là thiết bị đầu cuối)

Đang thực hiện: /tmp/apt-key-gpghome.MuT5BDWwKZ/gpg.1.sh –keyserver hkp: //keyserver.ub Ubuntu.com: 80 –recv 7F0CEB10

gpg: khóa 5F8F93707F0CEB10: khóa chung "Khóa ký hoàn toàn hợp pháp <[email được bảo vệ]>" nhập khẩu

gpg: khóa 9ECBEC467F0CEB10: 1 chữ ký không được kiểm tra do thiếu khóa

gpg: khóa 9ECBEC467F0CEB10: khóa chung "Richard Kreuter <[email được bảo vệ]>" nhập khẩu

gpg: Tổng số đã xử lý: 2

gpg: đã nhập: 2

Loại bỏ container trung gian 69c4dba38983

—> cffbe06c1b50

Bước 4/10: RUN echo ‘deb http://doads-distro.mongodb.org/repo/ubfox-upstart dist 10gen’ > tee /etc/apt/source.list.d/mongodb.list

—> Chạy trong 40630fd7b0a9

Loại bỏ container trung gian 40630fd7b0a9

—> a1bd9d8d7e51

Bước 5/10: CHẠY apt-get cập nhật

—> Chạy trong 750717d9c0ea

Lượt truy cập: 1 http://archive.ubfox.com/ubfox bionic InRelease

Lượt truy cập: 2 http://archive.ubfox.com/ubfox cập nhật bionic InRelease

Lượt truy cập: 3 http://security.ubfox.com/ubfox bionic-security InRelease

Lượt truy cập: 4 http://archive.ubfox.com/ubfox bionic-backports InRelease

Đọc danh sách gói…

Loại bỏ container trung gian 750717d9c0ea

—> 397d6501db58

Bước 6/10: CHẠY apt-get install -y mongodb

—> Chạy trong 88609c005e73

Đọc danh sách gói…

Xây dựng cây phụ thuộc…

Đọc thông tin nhà nước…

Các gói MỚI sau đây sẽ được cài đặt:

libboost-filesystem1,65.1 libboost-iostreams1,65.1

libboost-chương trình-tùy chọn1,65.1 libboost-system1,65.1 libgoogle-perftools4

libpcap0.8 libpcrecpp0v5 libsnappy1v5 libstemmer0d libtcmalloc-Minimal4

libunwind8 libyaml-cpp0.5v5 mongo-tools mongodb mongodb-client

mongodb-server mongodb-server-core

0 được nâng cấp, 17 cài đặt mới, 0 để loại bỏ và 0 không được nâng cấp.

Cần lấy 53,7 MB tài liệu lưu trữ.

Sau thao tác này, 218 MB dung lượng đĩa bổ sung sẽ được sử dụng.

Nhận: 1 http://archive.ubfox.com/ubfox bionic-Updates / Universe amd64 mongodb-client amd64 1: 3.6.3-0ubfox1.1 [20.2 MB]

Nhận: 2 http://archive.ubfox.com/ubfox bionic-Updates / Universe amd64 mongodb-server-core amd64 1: 3.6.3-0ubfox1.1 [20.3 MB]

Nhận: 3 http://archive.ubfox.com/ubfox bionic-Updates / Universe amd64 mongodb-server tất cả 1: 3.6.3-0ubfox1.1 [12.6 kB]

Nhận: 4 http://archive.ubfox.com/ubfox bionic-Updates / Universe amd64 mongodb amd64 1: 3.6.3-0ubfox1.1 [9968 B]

Đã tải 53,7 MB sau 10 giây (5485 kB / s)

Chọn gói chưa được chọn trước đó libpcap0.8: amd64.

(Đọc cơ sở dữ liệu … 4390 tệp và thư mục hiện được cài đặt.)

Chọn gói mongodb-client chưa được chọn trước đó.

Chuẩn bị giải nén … / 13-mongodb-client_1% 3a3.6.3-0ubfox1.1_amd64.deb …

Giải nén mongodb-client (1: 3.6.3-0ubfox1.1) …

Chọn gói mongodb-server-core chưa được chọn trước đó.

Chuẩn bị giải nén … / 14-mongodb-server-core_1% 3a3.6.3-0ubfox1.1_amd64.deb …

Giải nén mongodb-server-core (1: 3.6.3-0ubfox1.1) …

Chọn gói mongodb-server chưa được chọn trước đó.

Chuẩn bị giải nén … / 15-mongodb-server_1% 3a3.6.3-0ubfox1.1_all.deb …

Giải nén máy chủ mongodb (1: 3.6.3-0ubfox1.1) …

Chọn gói mongodb chưa được chọn trước đó.

Chuẩn bị giải nén … / 16-mongodb_1% 3a3.6.3-0ubfox1.1_amd64.deb …

Giải nén mongodb (1: 3.6.3-0ubfox1.1) …

Thiết lập mongodb-server-core (1: 3.6.3-0ubfox1.1) …

Thiết lập công cụ mongo (3.6.3-0ubfox1) …

Thiết lập máy khách mongodb (1: 3.6.3-0ubfox1.1) …

Thiết lập máy chủ mongodb (1: 3.6.3-0ubfox1.1) …

invoke-rc.d: không thể xác định runlevel hiện tại

invoke-rc.d: chính sách-RC.d bị từ chối thực hiện bắt đầu.

Thiết lập mongodb (1: 3.6.3-0ubfox1.1) …

Xử lý các kích hoạt cho libc-bin (2.27-3ubfox1) …

Loại bỏ container trung gian 88609c005e73

—> d9c072cb1f84

Bước 7/10: CHẠY mkdir -p / data / db

—> Chạy trong f817778f69ab

Loại bỏ container trung gian f817778f69ab

—> a3fbdb3def5c

Bước 8/10: TIẾP TỤC 27017

—> Chạy trong 8d070e2a1e07

Loại bỏ container trung gian 8d070e2a1e07

—> f770776a538c

Bước 9/10: CMD ["–cảng 27017"]

—> Chạy trong ab612410df77

Loại bỏ container trung gian ab612410df77

—> e5830b80934f

Bước 10/10: ENTRYPOINT usr / bin / mongod

—> Chạy trong 95f574727aab

Loại bỏ container trung gian 95f574727aab

—> 095d17727ca0

Xây dựng thành công 095d17727ca0

Geekflare_mongodb được gắn thẻ thành công: mới nhất

Hãy để chúng tôi kiểm tra xem hình ảnh docker đã được tạo với tên geekflare_mongodb.

[email được bảo vệ]: ~ $ hình ảnh docker

ID REPOSITORY TAG IMAGE KÍCH THƯỚC TẠO

geekflare_mongodb mới nhất 095d17727ca0 3 phút trước 325MB

ubfox mới nhất 3556258649b2 4 ngày trước 64.2MB

mean_express mới nhất 35dcb3df9806 6 ngày trước 923MB

mean_angular mới nhất 9f8d61db600c 6 ngày trước 1.29GB

Chạy hình ảnh docker geekflare_mongodb bên trong một thùng chứa mongo_container.

[email được bảo vệ]: ~ $ docker chạy –name mongo_container -i -t geekflare_mongodb

2019-07-27T19: 38: 23.734 + 0000 TÔI KIỂM SOÁT [initandlisten] MongoDB bắt đầu: pid = 6 port = 27017 dbpath = / data / db 64-bit host = b0095c1e5536

2019-07-27T19: 38: 23.735 + 0000 TÔI KIỂM SOÁT [initandlisten] phiên bản db v3.6.3

2019-07-27T19: 38: 23.735 + 0000 TÔI KIỂM SOÁT [initandlisten] phiên bản git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5

2019-07-27T19: 38: 23.736 + 0000 TÔI KIỂM SOÁT [initandlisten] Phiên bản OpenSSL: OpenSSL 1.1.1 ngày 11 tháng 9 năm 2018

2019-07-27T19: 38: 23.739 + 0000 TÔI KIỂM SOÁT [initandlisten] cấp phát: tcmalloc

2019-07-27T19: 38: 23.739 + 0000 I KIỂM SOÁT [initandlisten] mô-đun: không có

2019-07-27T19: 38: 23.739 + 0000 TÔI KIỂM SOÁT [initandlisten] xây dựng môi trường:

2019-07-27T19: 38: 23.739 + 0000 TÔI KIỂM SOÁT [initandlisten] distarch: x86_64

2019-07-27T19: 38: 23.739 + 0000 TÔI KIỂM SOÁT [initandlisten] target_arch: x86_64

2019-07-27T19: 38: 23.739 + 0000 I KIỂM SOÁT [initandlisten] tùy chọn: {}

2019-07-27T19: 38: 23.745 + 0000 TÔI BẢO QUẢN [initandlisten] Wiredtiger_open config: tạo, cache_size = 2038M, session_max = 20000, evtion = (chủ đề_min = 4, chủ đề_max = 4) , log = (enable = true, archive = true, path = Tạp chí, nén = snappy), file_manager = (close_idle_time = 100000), stats_log = (Wait = 0), verbose = (recovery_proTHER),

2019-07-27T19: 38: 24.733 + 0000 TÔI KIỂM SOÁT [initandlisten]

2019-07-27T19: 38: 24.734 + 0000 TÔI KIỂM SOÁT [initandlisten] ** CẢNH BÁO: Không bật điều khiển truy cập cho cơ sở dữ liệu.

2019-07-27T19: 38: 24.735 + 0000 TÔI KIỂM SOÁT [initandlisten] ** Đọc và ghi quyền truy cập vào dữ liệu và cấu hình không bị hạn chế.

2019-07-27T19: 38: 24.736 + 0000 TÔI KIỂM SOÁT [initandlisten] ** CẢNH BÁO: Bạn đang chạy quy trình này với tư cách là người dùng root, không được khuyến nghị.

2019-07-27T19: 38: 24.736 + 0000 TÔI KIỂM SOÁT [initandlisten]

2019-07-27T19: 38: 24.736 + 0000 TÔI KIỂM SOÁT [initandlisten] ** CẢNH BÁO: Máy chủ này được liên kết với localhost.

2019-07-27T19: 38: 24.737 + 0000 TÔI KIỂM SOÁT [initandlisten] ** Các hệ thống từ xa sẽ không thể kết nối với máy chủ này.

2019-07-27T19: 38: 24.737 + 0000 TÔI KIỂM SOÁT [initandlisten] ** Khởi động máy chủ với –bind_ip để chỉ định IP nào

2019-07-27T19: 38: 24.737 + 0000 TÔI KIỂM SOÁT [initandlisten] ** địa chỉ mà nó sẽ phục vụ các phản hồi từ hoặc với –bind_ip_all để

2019-07-27T19: 38: 24.737 + 0000 TÔI KIỂM SOÁT [initandlisten] ** liên kết với tất cả các giao diện. Nếu hành vi này là mong muốn, bắt đầu

2019-07-27T19: 38: 24.738 + 0000 TÔI KIỂM SOÁT [initandlisten] ** máy chủ với –bind_ip 127.0.0.1 để tắt cảnh báo này.

2019-07-27T19: 38: 24.738 + 0000 TÔI KIỂM SOÁT [initandlisten]

2019-07-27T19: 38: 24.739 + 0000 TÔI BẢO QUẢN [initandlisten] createdCollection: admin.system.version với UUID được cung cấp: 4b8b509d-633a-46c1-a302-cb8c82b0d5d3

2019-07-27T19: 38: 24.788 + 0000 I tính năng cài đặt [initandlisten] Tính tương thíchVersion thành 3.6

2019-07-27T19: 38: 24.818 + 0000 TÔI BẢO QUẢN [initandlisten] createdCollection: local.startup_log với UUID được tạo: 6c1c0366-4b1b-4b92-9fcd-d18acc126072

2019-07-27T19: 38: 24.862 + 0000 I FTDC [initandlisten] Khởi tạo thu thập dữ liệu chẩn đoán toàn thời gian với thư mục ‘/data/db/diagnellect.data’

2019-07-27T19: 38: 24.866 + 0000 TÔI MẠNG [initandlisten] đang chờ kết nối trên cổng 27017

Mở một thiết bị đầu cuối mới và kiểm tra xem mongo_container có đang chạy không.

[email được bảo vệ]: ~ $ docker ps

CONTAINER ID HÌNH ẢNH TÌNH TRẠNG TÌNH TRẠNG TẠO TÊN

b0095c1e5536 geekflare_mongodb   "/ bin / sh -c usr / bin /"   35 giây trước Lên 33 giây 27017 / tcp mongo_container

Như bạn có thể thấy, container được tạo từ hình ảnh geekflare_mongodb đang hoạt động.

Tôi hy vọng điều này cung cấp cho bạn một ý tưởng về dockerfile và lợi ích của nó. Bạn cũng có thể xem tài liệu này trên Dockerfile thực hành tốt nhất để tìm hiểu thêm.

THẺ

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map