Docker Tutorial for Beginners 6 - Fundamentals Of Dockerfile
Mục lục:
Hình ảnh Docker là bản thiết kế của các container Docker chứa ứng dụng và mọi thứ bạn cần để chạy ứng dụng. Một container là một thể hiện thời gian chạy của một hình ảnh.
Trong hướng dẫn này, chúng tôi sẽ giải thích Dockerfile là gì, cách tạo và cách xây dựng hình ảnh Docker với Dockerfile.
Dockerfile là gì
Dockerfile là một tệp văn bản chứa tất cả các lệnh mà người dùng có thể chạy trên dòng lệnh để tạo một hình ảnh. Nó bao gồm tất cả các hướng dẫn cần thiết của Docker để xây dựng hình ảnh.
Hình ảnh Docker được tạo thành từ một loạt các lớp hệ thống tập tin biểu thị các hướng dẫn trong Dockerfile của hình ảnh tạo nên một ứng dụng phần mềm thực thi.
Tệp Docker có dạng sau:
# Comment INSTRUCTION arguments
INSTRUCTION
không phân biệt chữ hoa chữ thường, nhưng quy ước là sử dụng UPPERCASE cho tên của nó.
Dưới đây là danh sách với một mô tả ngắn về một số hướng dẫn Dockerfile được sử dụng nhiều nhất:
- ARG - Hướng dẫn này cho phép bạn xác định các biến có thể được thông qua tại thời điểm xây dựng. Bạn cũng có thể đặt một giá trị mặc định. TỪ - Hình ảnh cơ sở để xây dựng một hình ảnh mới. Hướng dẫn này phải là hướng dẫn không bình luận đầu tiên trong Dockerfile. Ngoại lệ duy nhất từ quy tắc này là khi bạn muốn sử dụng một biến trong đối số
FROM. Trong trường hợp này,FROMcó thể được đi trước bởi một hoặc nhiều hướng dẫnARG. LABEL - Được sử dụng để thêm siêu dữ liệu vào hình ảnh, chẳng hạn như mô tả, phiên bản, tác giả..v.v. Bạn có thể chỉ định nhiềuLABELvà mỗi lệnhLABELlà một cặp khóa-giá trị. CHẠY - Các lệnh được chỉ định trong hướng dẫn này sẽ được thực thi trong quá trình xây dựng. Mỗi lệnhRUNtạo một lớp mới trên đầu của hình ảnh hiện tại. THÊM - Được sử dụng để sao chép các tệp và thư mục từ nguồn được chỉ định đến đích đã chỉ định trên hình ảnh docker. Nguồn có thể là các tệp hoặc thư mục cục bộ hoặc một URL. Nếu nguồn là một kho lưu trữ tar cục bộ, thì nó sẽ tự động được giải nén vào hình ảnh Docker. SAO CHÉP - Tương tự nhưADDnhưng nguồn chỉ có thể là tệp hoặc thư mục cục bộ. ENV - Hướng dẫn này cho phép bạn xác định một biến môi trường. CMD - Được sử dụng để chỉ định một lệnh sẽ được thực thi khi bạn chạy một container. Bạn chỉ có thể sử dụng một lệnhCMDtrong Dockerfile của mình. ENTRYPOINT - Tương tự nhưCMD, hướng dẫn này xác định lệnh nào sẽ được thực thi khi chạy container. WORKDIR - Lệnh này đặt thư mục làm việc hiện tại cho các lệnhRUN,CMD,ENTRYPOINT,COPYvàADD. NGƯỜI DÙNG - Đặt tên người dùng hoặcUIDđể sử dụng khi chạy bất kỳ hướng dẫnRUN,CMD,ENTRYPOINT,COPYvàADD. TÍNH NĂNG - Cho phép bạn gắn một thư mục máy chủ vào thùng chứa. EXPOSE - Được sử dụng để chỉ định cổng mà container lắng nghe khi chạy.
Để, loại trừ các tệp và thư mục khỏi được thêm vào hình ảnh, hãy tạo tệp
.dockerignore
trong thư mục ngữ cảnh. Cú pháp của
.dockerignore
tương tự như một trong các tệp
.gitignore
của Git.
Để tham khảo đầy đủ và giải thích chi tiết về các hướng dẫn Dockerfile, xem trang tham khảo Dockerfile chính thức.
Tạo một Dockerfile
Kịch bản phổ biến nhất khi tạo hình ảnh Docker là kéo hình ảnh hiện có từ sổ đăng ký (thường là từ Docker Hub) và chỉ định những thay đổi bạn muốn thực hiện trên hình ảnh cơ sở. Hình ảnh cơ sở được sử dụng phổ biến nhất khi tạo hình ảnh Docker là Alpine vì nó nhỏ và được tối ưu hóa để chạy trong RAM.
Trong ví dụ này, chúng tôi sẽ tạo một hình ảnh Docker cho máy chủ Redis. Chúng tôi sẽ sử dụng Ubuntu 18.04 mới nhất làm hình ảnh cơ bản.
Đầu tiên, tạo một thư mục sẽ chứa Dockerfile và tất cả các tệp cần thiết:
mkdir ~/redis_docker
Điều hướng đến thư mục và tạo Dockerfile sau:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Hãy giải thích ý nghĩa của từng dòng trong Dockerfile:
- Trong dòng
1chúng tôi đang xác định hình ảnh cơ sở. LệnhRUNbắt đầu trong dòng3sẽ cập nhật chỉ mục apt, cài đặt gói của Red red-máy chủ và làm sạch bộ đệm apt. Các lệnh được sử dụng trong hướng dẫn giống như các lệnh bạn sẽ sử dụng để cài đặt redis trên máy chủ Ubuntu. LệnhEXPOSExác định cổng mà máy chủ redis lắng nghe. Trong dòng cuối cùng, chúng tôi đang sử dụng lệnhCMDđể đặt lệnh mặc định Điều đó sẽ được thực thi khi container chạy.
Lưu tệp và đóng trình chỉnh sửa.
Xây dựng hình ảnh
Bước tiếp theo là xây dựng hình ảnh. Để làm như vậy, hãy chạy lệnh sau từ thư mục chứa Dockerfile:
docker build -t linuxize/redis.
Tùy chọn
-t
chỉ định tên hình ảnh và tùy chọn tên người dùng và thẻ theo định dạng 'tên người dùng / hình ảnh: thẻ'.
Đầu ra của quá trình xây dựng sẽ trông giống như thế này:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Khi quá trình xây dựng được hoàn thành, hình ảnh mới sẽ được liệt kê trong danh sách hình ảnh:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Chạy một container
Bây giờ hình ảnh được tạo, bạn chạy một container từ nó bằng cách chạy:
docker run -d -p 6379:6379 --name redis linuxize/redis
Các tùy chọn
-d
báo cho Docker chạy container ở chế độ tách rời, tùy chọn
-p 6379:6379
sẽ xuất bản cổng 6379 cho máy chủ và tùy chọn
--name redis
chỉ định tên container. Đối số cuối cùng
linuxize/redis
là tên của hình ảnh, được sử dụng để chạy container.
Khi container bắt đầu, sử dụng lệnh sau để liệt kê tất cả các container đang chạy:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Để xác minh rằng mọi thứ hoạt động như bình thường, nên sử dụng
redis-cli
để kết nối với bộ chứa
redis-cli
:
redis-cli ping
Máy chủ redis sẽ phản hồi với
PONG
.
Phần kết luận
Hướng dẫn này chỉ đề cập đến những điều cơ bản của việc sử dụng Dockerfiles để xây dựng hình ảnh. Để tìm hiểu thêm về cách viết Dockerfiles và các thực tiễn tốt nhất được đề xuất, hãy xem Thực tiễn tốt nhất để viết Dockerfiles.
Với phần mềm miễn phí này, bạn có thể tùy chỉnh hình nền trên nhiều màn hình với hình ảnh từ PC hoặc từ Flickr. DisplayFusion giúp bạn dễ dàng tùy chỉnh hình nền máy tính của mình bằng hình ảnh của riêng bạn. Chọn ảnh từ ổ cứng của bạn hoặc kéo chúng xuống từ Flickr với freebie này. Bạn có thể tìm kiếm và xem trước các bức ảnh từ Flickr từ bên trong chương trình, và có nhiều lựa chọn tốt cho những người có nhiều màn hình.
Cửa sổ progam đơn giản hiển thị (các) màn hình của bạn ở phần trên cùng, và bạn có thể nhấp vào mỗi quay lại để chọn một hình ảnh cho màn hình đó, hoặc chọn để nền có cả hai màn hình. Bạn có thể duyệt ổ đĩa cứng của riêng mình để xem ảnh, nhưng thật thú vị khi nhấp vào nút "Nạp từ Flickr".
Từ "Photology" có nghĩa là "nghiên cứu hình ảnh" và đó chính xác là ứng dụng phần mềm miễn phí: Nó thực hiện phân tích về đặc điểm của từng ảnh trong kho lưu trữ của bạn, lập chỉ mục thông tin trong cơ sở dữ liệu, sau đó cho phép bạn tìm kiếm ảnh của mình dựa trên những đặc điểm đó: Ảnh chụp trong nhà hay ngoài trời? Có thực vật, bầu trời, nước, hoặc khuôn mặt trong các hình ảnh? Các hình ảnh được lấy nét hay không tập trung? Nó có chứa một màu nào đó, hay là bức ảnh bạn đang
Nó có thể không phải lúc nào cũng đúng - đôi khi chương trình diễn giải một số màu nhất định, hoặc độ sáng trong một bức ảnh, "chiều" hoặc "bên ngoài" - nhưng phần lớn, nó đánh dấu. Bạn không cần phải nhận được đầu gối sâu trong technobabble để đánh giá cao như thế nào Photology có thể làm cho việc tìm kiếm rằng một trong những kim-trong-một-haystack ảnh dễ dàng hơn nhiều. Giờ đây, các màn trập kỹ thuật số như bản thân tôi đang lấp đầy ổ đĩa cứng của chúng tôi với hàng ngàn hình ảnh, chúng tôi c
Hewlett-Packard nghĩ rằng nó có thể xây dựng các trung tâm dữ liệu nhanh hơn và rẻ hơn bằng cách sử dụng các thành phần chuẩn được xây dựng sẵn trên trang web theo kiểu "giống Lego". Thứ ba, bao gồm bốn trung tâm dữ liệu lớn, hoặc góc phần tư, được xây dựng xung quanh một tòa nhà hoạt động ở trung tâm. Nó được xây dựng từ các bộ phận kim loại tấm đúc sẵn, và các góc phần tư, mỗi phần khoảng 6.000 feet vuông, có thể được thêm vào cùng một lúc khi nhu cầu năng lực của công ty tăng lên.
Đó Là một sự khởi đầu lớn từ các trung tâm dữ liệu vữa và gạch truyền thống. được thiết kế trên cơ sở tùy chỉnh và mất hơn một năm để xây dựng. Sử dụng các thiết kế tiêu chuẩn và các thành phần được chế tạo bởi nhà máy, HP cho biết nó có thể giảm chi phí xây dựng xuống một nửa và có được một trung tâm dữ liệu mới và hoạt động trong 4 đến 6 tháng.







