Cách sử dụng Plugin Docker cho Visual Studio Code
Trong bài viết này, ta sẽ sử dụng Docker Plugin cho Visual Studio Code. Docker cho phép ta đóng gói các ứng dụng của bạn thành hình ảnh và chạy chúng dưới dạng containers trên bất kỳ nền tảng nào đã cài đặt Docker. Ta sẽ sử dụng plugin này với hai ngăn xếp nhà phát triển: Node.js và Go.Cài đặt
Bạn cần phải cài đặt docker trên trạm làm việc của bạn . Hướng dẫn về cách cài đặt và chạy docker có sẵn tại đây và nó phải dành riêng cho hệ điều hành cụ thể mà bạn đang chạy.
Bạn cũng cần phải cài đặt Mã Visual Studio .
Khi bạn đã cài đặt Visual Studio Code, hãy mở nó, nhấp vào phần mở rộng ở khung bên trái nhất và tìm kiếm Docker.
Sau khi cài đặt, bạn sẽ nhận thấy một vài điều mới trong version Visual Studio Code của bạn . Ở khung bên trái nhất, có một phần Docker mới với biểu tượng Docker, khi được nhấp vào, Docker Explorer sẽ mở ra ba phần. Hình ảnh , Vùng chứa , Register
Ngoài ra còn có một số lệnh được thêm vào bảng lệnh, bạn có thể xem bằng cách mở bảng lệnh và nhập vào docker
.
Node.js
Ta sẽ sử dụng ứng dụng Node.js để chứng minh các khả năng mà plugin Docker thêm vào VSCode.
Hãy tạo một server Express.
- mkdir docker-node
- cd docker-node
- npm init -y
- npm install --save express
- touch index.js
Ta sẽ có một cây folder như sau:
. ├── index.js ├── node_modules ├── package-lock.json └── package.json 1 directory, 3 files
Đây là nội dung của index.js
const express = require('express') const app = express() app.listen(3000) app.get('/', (req, res) => { res.send('hello world') })
Cập nhật package.json
để có tập lệnh bắt đầu.
"scripts": { "start": "node index.js" },
Bây giờ, ta có thể chỉ cần chạy ứng dụng này với npm start
và chuyển đến cổng 3000
và xem ứng dụng hoạt động.
Theo truyền thống, để thêm Docker, ta sẽ làm theo các bước sau.
- Tạo một Dockerfile (hoặc docker-compos.yaml)
- Thêm hướng dẫn docker vào file (FROM, WORKDIR, ADD, EXPOSE, CMD)
- Chạy bản
docker build...
trên terminal để xây dựng hình ảnh - Chạy
docker run...
trên terminal để chạy container
Tuy nhiên, với plugin, tất cả những gì ta cần làm là như sau.
Mở bảng lệnh và nhập vào docker
, sau đó chọn Docker: Add Docker files to Workspace
. Nó phải là lựa chọn đầu tiên. Nhấn Enter
Bạn cần chọn nền tảng / ngăn xếp, chọn Node.js và nhấn Enter
.
Sau đó, bạn cần chọn một cổng. Viết 3000
vì đó là cổng mà ứng dụng của ta sẽ lắng nghe.
Các file sau đây được bổ sung vào không gian làm việc của bạn: .dockerignore
, docker-compose.debug.yml
, docker-compose.yml
, và Dockerfile
.
.dockerignore
cho .dockerignore
bỏ qua các file được liệt kê khi thêm file vào hình ảnh xây dựng.
docker-compose.debug.yml
sẽ cho phép bạn chạy docker-compose
với tính năng kiểm tra và đính kèm trình gỡ lỗi.
version: '2.1' services: docker-node: image: docker-node build: . environment: NODE_ENV: development ports: - 3000:3000 - 9229:9229 command: node --inspect=0.0.0.0:9229 index.js
Tuy nhiên, nếu bạn đang gỡ lỗi trong quá trình phát triển, bạn có thể cần phải đính kèm một ổ đĩa để những thay đổi bạn thực hiện trên máy local của bạn vẫn tồn tại trong containers .
Tệp docker-compose.yml
là một file docker-compose.yml
tiêu chuẩn được sử dụng để chạy các dịch vụ docker. Khi bạn thêm các tài nguyên / dịch vụ khác như kết nối database và bộ cân bằng tải, bạn sẽ chỉnh sửa file này.
version: '2.1' services: docker-node: image: docker-node build: . environment: NODE_ENV: production ports: - 3000:3000
Dockerfile
, là Dockerfile
quan trọng nhất ở đây, vì nó phải được xây dựng, chứa các hướng dẫn mà ta sẽ phải viết thủ công nếu ta chưa cài đặt plugin.
FROM node:8.9-alpine ENV NODE_ENV production WORKDIR /usr/src/app COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] RUN npm install --production --silent && mv node_modules ../ COPY . . EXPOSE 3000 CMD npm start
Tiếp theo, để xây dựng Hình ảnh, hãy mở bảng lệnh VS Code và nhập vào docker
sau đó chọn Docker: Build Image
và nhấn Enter
.
Bạn sẽ được yêu cầu chọn Dockerfile, chọn nó và nhấn Enter
.
Tiếp theo, bạn sẽ được yêu cầu chọn thẻ. Để docker-node
mặc định được chọn và nhấn Enter
.
Thiết bị terminal tích hợp sẽ mở ra và các bản ghi xây dựng sẽ hiển thị.
Cuối cùng, ta cần chạy containers . , mở bảng lệnh và nhập vào docker run
, chọn Docker: Run
Danh sách tất cả các containers trong hệ thống của bạn sẽ hiển thị, hãy chọn docker-node:latest
, cái mà ta đã gắn thẻ và nhấn Enter
.
Thiết bị terminal sẽ hiển thị log cho lệnh chạy.
Lưu ý nó đã thêm -p 3000:3000
thị cổng vào server của ta để ta có thể chạy ứng dụng bằng cách truy cập localhost:3000
.
Ta cũng có thể chạy containers bằng cách chuyển đến ngăn bên trái, chọn phần Docker , sau đó bên dưới Hình ảnh , chọn hình ảnh docker-node
, nhấp chuột phải và nhấp vào chạy.
Các bản ghi giống nhau sẽ chạy trên terminal .
Bạn cũng sẽ nhận thấy rằng phần hình ảnh ở trên có danh sách các hình ảnh trong hệ thống của bạn. Khi containers docker-node đang chạy, Ta có thể kiểm tra các containers đang chạy trong cùng một phần và thậm chí dừng chúng.
Ở trên, Attach Shell
được chọn, tương đương với lệnh docker bên dưới.
- docker exec -it <container> sh
Điều này cho thấy kết quả log terminal bên dưới.
Bạn có thể thấy ta đang ở trong containers và ta có thể liệt kê các file bên trong containers .
Dừng containers và thử chạy ứng dụng với docker-soạn. Mở bảng lệnh, tìm docker-soạn và xem kết quả.
Đi
Nếu bạn chưa quen với Golang, bạn có thể chuyển sang chủ đề tiếp theo.
Docker cũng được xây dựng với Go
Hãy tạo một ứng dụng Go.
- mkdir docker-go
- cd docker-go
- touch main.go
Cây folder của bạn sẽ có một file .
. └── main.go 0 directories, 1 file
Đây là nội dung của file main.go
package main import ( "log" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello World")) } func main() { http.HandleFunc("/", helloHandler) if err := http.ListenAndServe(":9000", nil); err != nil { log.Fatalln("ListenAndServer Error", err) } }
Bạn có thể chạy Ứng dụng với:
- go run main.go
Tuy nhiên, hãy sử dụng plugin VSCode Docker để tạo hình ảnh và chạy containers .
Tạo Dockerfile bằng cách mở bảng lệnh, nhập Docker và chọn Docker: Add Dockerfile to Workspace
.
Bạn sẽ được yêu cầu chọn một nền tảng, chọn Go
và nhấn Enter
.
Sau đó, bạn sẽ được yêu cầu chọn một cổng, ghi vào cổng 9000
, vì đó là cổng ta đã chọn trên ứng dụng của bạn và nhấn Enter
.
4 file sau đây sẽ được tạo. .dockerignore
, docker-compose.debug.yml
, docker-compose.yml
, và Dockerfile
.
Tệp .dockerignore
yêu cầu Docker bỏ qua một số file khi thêm file vào hình ảnh.
Docker Compose sử dụng docker-compose.debug.yml
và docker-compose.yml
để chạy ứng dụng. Chúng không khác nhau nhiều, vì file gỡ lỗi yêu cầu đầu vào bổ sung, vì gỡ lỗi Go phức tạp hơn.
Tuy nhiên, Dockerfile
ở đây là bit thú vị nhất. Hai dòng cuối cùng của build stage
được comment và thêm RUN go install -v ./...
# RUN go-wrapper download # "go get -d -v ./..." # RUN go-wrapper install # "go install -v ./..." RUN go install -v ./...
Đây là file docker cuối cùng.
#build stage FROM golang:alpine AS builder WORKDIR /go/src/app COPY . . RUN apk add --no-cache git # RUN go-wrapper download # "go get -d -v ./..." # RUN go-wrapper install # "go install -v ./..." RUN go install -v ./... #final stage FROM alpine:latest RUN apk --no-cache add ca-certificates COPY --from=builder /go/bin/app /app ENTRYPOINT ./app LABEL Name=docker-go Version=0.0.1 EXPOSE 9000
Loại mẫu Dockerfile này được gọi là xây dựng nhiều giai đoạn và ưu điểm chính của nó là tối ưu hóa Docker image . Nó chủ yếu hữu ích cho các ngôn ngữ đã biên dịch, mà trong hầu hết các trường hợp không yêu cầu các công cụ biên dịch để chạy ứng dụng đã biên dịch. Cờ vây là một ví dụ điển hình.
Tóm lại, ta sử dụng một phần của bản dựng Docker để biên dịch ứng dụng, sau đó sao chép file binary đã biên dịch sang Docker image nhẹ hơn và chạy nó từ đó.
Tiếp theo ta cần xây dựng hình ảnh. Mở bảng lệnh và nhập docker-build
, chọn Docker: Build Image
và nhấn Enter
.
Bạn sẽ được yêu cầu chọn Dockerfile, để mặc định được chọn và nhấn Enter
.
Cuối cùng, bạn cần chọn một thẻ hình ảnh. Để lại docker-go:latest
mặc định docker-go:latest
và nhấn Enter
.
Bạn sẽ thấy log xây dựng trong terminal tích hợp.
Cuối cùng, ta cần chạy containers . Mở bảng lệnh và nhập docker run
. Chọn Docker: Run
và nhấn Enter
.
Bạn sẽ được yêu cầu chọn hình ảnh. Chọn docker-go:latest
.
Bạn sẽ thấy log trong Thiết bị terminal tích hợp.
Giống như trước đây, bạn cũng có thể chạy containers bằng cách chọn phần Docker trong ngăn bên trái và bên dưới containers , chọn docker-go
, nhấp chuột phải vào nhấp vào Chạy .
Sau đó, bạn sẽ thấy các log docker run
giống nhau.
Vì containers Docker đang chạy của ta chỉ có file binary , ta có thể đính kèm shell , trong phần containers .
Ta có thể nhập ls
trong shell đính kèm trong Thiết bị terminal tích hợp và ta sẽ thấy một file binary có tên là app
, tương ứng với Dockerfile.
Các tính năng khác
Cuối cùng ta sẽ xem xét các tính năng hữu ích khác đi kèm với plugin VSCode Docker.
Docker kiểm tra hình ảnh: Điều này cho phép bạn kiểm tra hình ảnh được tạo và xem chi tiết trong file JSON.
Chọn hình ảnh bạn muốn và mở menu ngữ cảnh và chọn hình ảnh kiểm tra .
Một file JSON sẽ được mở với các chi tiết.
Hiển thị log containers : Điều này cũng được tìm thấy trong menu ngữ cảnh để chạy containers . Ta sẽ sử dụng containers Node.js đang chạy
Nhật ký sẽ được hiển thị trong Thiết bị terminal tích hợp.
Register : Bạn có thể đăng nhập vào register Docker của bạn và xem các hình ảnh bạn đã tạo và đẩy.
System Prune: Tùy chọn này cho phép bạn chạy docker system prune
, giúp xóa các hình ảnh không sử dụng đến hệ thống của bạn. Nó có sẵn thông qua nút có cửa sổ và dấu thập trong trình khám phá Docker.
Intellisense: Nếu bạn phải tự mình viết các file Docker (Dockerfile, docker-compos.yml), bạn sẽ nhận được intellisense hữu ích khi nhập.
Nó thậm chí sẽ cung cấp cho bạn các thẻ hình ảnh có sẵn. Này được kích hoạt bằng lệnh tên hình ảnh, sau đó một dấu hai chấm đầy đủ, và CMD
+ Space
.
Dockerfile Linting: Khi bạn gặp lỗi trong Dockerfiles của bạn , một dòng nguệch ngoạc sẽ xuất hiện trong VS Code và khi bạn di chuột qua nó, bạn sẽ được hiển thị lỗi là gì.
Tab vấn đề bên dưới VS Code cũng sẽ hiển thị nó.
Kết luận
Plugin Docker cho VS Code có thể giúp bạn nhanh chóng cài đặt và tạo các Dockerfiles của bạn , xây dựng và chạy chúng mà không cần tự mình nhập nhiều lệnh.
Các tin liên quan
Cách sử dụng Ansible để cài đặt và thiết lập Docker trên Ubuntu 18.042019-12-05
Cách tạo ứng dụng Django và Gunicorn với Docker
2019-10-25
Cách thiết lập Flask với MongoDB và Docker
2019-10-11
Cách cài đặt và sử dụng Docker trên Debian 10
2019-07-08
Cách sử dụng server Docker từ xa để tăng tốc quy trình làm việc của bạn
2019-06-25
Cách cài đặt WordPress với Docker Compose
2019-05-24
Cách di chuyển Docker compose workflow sang Kubernetes
2019-04-03
Cách tối ưu hóa image Docker cho sản xuất
2019-03-25
Giữ lại một ứng dụng Node.js để phát triển với Docker Compose
2019-03-05
Cách cài đặt và sử dụng Docker Compose trên CentOS 7
2019-01-23