Software Engineer Training Theo dõi 1 Đã đăng vào thg 2 14, 2020 8:42 CH - 6 phút đọc @core200lab 3.7K 189 107 10.9K 0 16 Docker là gì ? Kiến thức cơ bản về Docker Bài đăng này đã không được cập nhật trong 2 năm I. T ại sao phải dùng Docker ? Việc setup và deploy application lên một hoặc nhiều server rất vất vả từ việc phải cài đặt các công cụ, môi trường cần cho application đến việc chạy được ứng dụng chưa kể việc không đồng nhất giữa các môi trường trên nhiều server khác nhau. Chính vì lý do đó Docker được ra đời để giải quyết vấn đề này. II. Docker là gì ? Docker là một nền tảng cho developers và sysadmin để develop, deploy và run application với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng và môi trường này được gọi là container. Khi cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì application của bạn sẽ được khởi chạy ngay lập tức. III. L ợi ích của Docker • Không như máy ảo Docker start và stop chỉ trong vài giây. • Bạn có thể khởi chạy container trên mỗi hệ thống mà bạn muốn. • Container có thể build và loại bỏ nhanh hơn máy ảo. • Dễ dàng thiết lập môi trường làm việc. Chỉ cần con�g 1 lần duy nhất và không bao giờ phải cài đặt lại các dependencies. Nếu bạn thay đổi máy hoặc có người mới tham gia vào project thì bạn chỉ cần lấy con�g đó và đưa cho họ. • Nó giữ cho word-space của bạn sạch sẽ hơn khi bạn xóa môi trường mà ảnh hưởng đến các phần khác. IV. Cài đặt Link download: tại đây Chọn bản cài đặt tương ứng với hệ điều hành của bạn và tiến hành cài đặt theo hướng dẫn đối với Linux còn Windows và MacOS thì bạn chỉ cần tải bản cài về và cài đặt như mọi application khác. Sau khi cài đặt xong để kiểm tra xem cài đặt thành công hay không ? • Mở command line: +11 • • • • $ docker version $ docker info $ docker run hello-world V. M ột số khái niệm • Docker Client: là cách mà bạn tương tác với docker thông qua command trong terminal. Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon. • Docker Daemon: là server Docker cho yêu cầu từ Docker API. Nó quản lý images, containers, networks và volume. • Docker Volumes: là cách tốt nhất để lưu trữ dữ liệu liên tục cho việc sử dụng và tạo apps. • Docker Registry: là nơi lưu trữ riêng của Docker Images. Images được push vào registry và client sẽ pull images từ registry. Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như : AWS, Google Cloud, Microsoft Azure. • Docker Hub: là Registry lớn nhất của Docker Images ( mặc định). Có thể tìm thấy images và lưu trữ images của riêng bạn trên Docker Hub ( miễn phí). • Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags. VD: golang:1.11-alpine. • Docker Networking: cho phép kết nối các container lại với nhau. Kết nối này có thể trên 1 host hoặc nhiều host. • Docker Compose: là công cụ cho phép run app với nhiều Docker containers 1 cách dễ dàng hơn. Docker Compose cho phép bạn con�g các command trong �le docker-compose.yml để sử dụng lại. Có sẵn khi cài Docker. • Docker Swarm: để phối hợp triển khai container. • Docker Services: là các containers trong production. 1 service chỉ run 1 image nhưng nó mã hoá cách thức đ ể run image — sử dụng port nào, bao nhiêu bản sao container run để service có hiệu năng cần thiết và ngay lập tức. VI. Docker�le Dockerfile là file config cho Docker để build ra image. Nó dùng một image cơ bản để xây dựng lớp image ban đầu. Một số image cơ bản: python, unbutu and alpine. Sau đó nếu có các lớp bổ sung thì nó được xếp chồng lên lớp cơ bản. Cuối cùng một lớp mỏng có thể được xếp chồng lên nhau trên các lớp khác trước đó. Các config : +11 • • • • • FROM — chỉ định image gốc: python, unbutu, alpine… • LABEL — cung cấp metadata cho image. Có thể sử dụng để add thông tin maintainer. Để xem các label của images, dùng lệnh docker inspect. • ENV — thiết lập một biến môi trường. • RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các package vào container. • COPY — Sao chép các �le và thư mục vào container. • ADD — Sao chép các �le và thư mục vào container. • CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham số có thể được ghi đè và chỉ có một CMD. • WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như : RUN, CMD, ENTRYPOINT, COPY, ADD,… • ARG — Định nghĩa giá trị biến được dùng trong lúc build image. • ENTRYPOINT — cung cấp lệnh và đối số cho một container thực thi. • EXPOSE — khai báo port lắng nghe của image. • VOLUME — tạo một điểm gắn thư mục để truy cập và lưu trữ data. VII. T ạo Demo Tạo file Dockerfile FROM golang:1.11 AS builder WORKDIR /go/src/docker-demo/ COPY . . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o docker-demo . FROM alpine:latest WORKDIR /root/ COPY — from=builder /go/src/docker-demo . CMD [“./docker-demo”] Tạo file main.go package main import ( “fmt” ) func main() { fmt.Println(“Learning Docker”) } Tiến hành build file Dockerfile $ docker build . +11 • • • • $ docker run 4cc010d9d657 Kết quả in ra dòng chữ Learning Docker đã được code trong file main.go VII. Các l ệnh cơ bản trong docker • List image/container: $ docker image/container ls • Delete image/container: $ docker image/container rm <tên image/container > • Delete all image hiện có: $ docker image rm $(docker images –a –q) • List all container hiện có: +11 • • • • $ docker ps –a • Stop a container cụ thể: $ docker stop <tên container> • Run container từ image và thay đổi tên container: $ docker run –name <tên container> <tên image> • Stop all container: $ docker stop $(docker ps –a –q) • Delete all container hiện có: $ docker rm $(docker ps –a –q) • Show log a container: $ docker logs <tên container> • Build một image từ container: $ docker build -t <tên container> • Tạosolution một for container chạy ngầm: startup Docker 200lab All rights reserved $ docker run -d <tên image> • Tải một image trên docker hub: $ docker pull <tên image> Bài viết liên quan Tìm hiểumột về Docker. • Start container: Thai Son $Dao docker start <tên container> 5 phút đọc 2422 2 0 5 Dockerize Django Application Dockerizing Node.js web app Docker intro Hà Văn Hùng Nguyen Van Long Russell 3 phút đọc 4 phút đọc 4 phút đọc 613 1 1 2 859 1 1 2 267 0 Docker: Chưa biết gì đến biết dùng (Phần 2 - Docker�le) Hoàn Tâm 8 phút đọc 53718 93 39 243 [DOCKER] Những điểm cần lưu ý khi sử dụng docker +11 • • • • Le Xuan Duy 11 phút đọc 6168 0 13 20 Docker - những kiến thức cơ bản phần 3 Nguyễn Văn Quy 6 phút đọc 15462 20 0 23 Node.js in Containers Using Docker CuO IT 3 phút đọc 738 3 0 3 Bài viết khác từ Software Engineer Training Flutter cơ bản: Lập trình ứng dụng đầu tiên Tìm hiểu lập trình bất đồng bộ trong Dart & Flutter Tìm hiểu Keys trong Flutter Xử lý lỗi với Future & TryCatch Block trong Flutter Software Engineer Training Software Engineer Training Software Engineer Training Software Engineer Training 16 phút đọc 11 phút đọc 7 phút đọc 12 phút đọc 833 0 0 3 582 0 0 3 350 0 0 2 459 0 Lập trình REST API TODO List với Golang - Từ UI tới triển khai Software Engineer Training 11 phút đọc 175 0 1 2 Golang Environment Variable: Biến môi trường trong Golang Software Engineer Training 5 phút đọc 133 0 0 2 Hướng dẫn setup môi trường lập trình Golang với Visual Studio Code Software Engineer Training 6 phút đọc 245 0 0 1 Lập trình backend là gì? Tự học lập trình REST API với Golang Software Engineer Training 11 phút đọc 170 0 0 2 Bình luận +11 • • • • Viết Xem trước Viết bình luận... Bình luận Chưa có bình luận nào. TÀI NGUYÊN Bài viết Tổ chức Câu hỏi Tags Videos Tác giả Thảo luận Đề xuất hệ thống Công cụ Machine Learning Trạng thái hệ thống DỊCH VỤ Viblo Code Viblo CV Viblo CTF Viblo Learning ỨNG DỤNG DI ĐỘNG LIÊN KẾT Tiếng Việt Về chúng tôi Phản hồi +11 Giúp đỡ FAQs RSS Điều khoản © Viblo 2022 • • • •