Uploaded by trung nguyen

Docker là gì Kiến thức cơ bản về Docker

advertisement

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

•  •

•  • 
Download