Docker 是一種虛擬化技術(shù),它可以在一個(gè)操作系統(tǒng)中運(yùn)行多個(gè)應(yīng)用程序,各自獨(dú)立、安全、可靠,且互不干擾。相較于傳統(tǒng)的虛擬機(jī)技術(shù),Docker 運(yùn)行速度更快,資源占用更少,且更易于管理、部署。
Docker 的核心思想是將應(yīng)用程序打包成稱為鏡像的文件,鏡像包含應(yīng)用程序及其運(yùn)行時(shí)需要的庫(kù)、配置等資源。鏡像通過 Docker Hub 或其他私有倉(cāng)庫(kù)進(jìn)行共享、管理。開發(fā)人員可以創(chuàng)建應(yīng)用程序鏡像,并將其發(fā)布到倉(cāng)庫(kù),運(yùn)維人員可以從倉(cāng)庫(kù)中獲取鏡像,并在各個(gè)服務(wù)器上部署應(yīng)用程序。
# Dockerfile 示例 FROM node:14-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
Dockerfile 是用來構(gòu)建鏡像的腳本文件,每個(gè)鏡像都有一個(gè)對(duì)應(yīng)的 Dockerfile。Dockerfile 文件中包含創(chuàng)建鏡像所需的指令,例如 FROM、RUN 和 CMD 等。使用 docker build 命令可以根據(jù) Dockerfile 構(gòu)建出鏡像。
除了鏡像之外,Docker 還有容器的概念。容器是鏡像的運(yùn)行實(shí)例,可以理解為一個(gè)輕量級(jí)的虛擬機(jī)。容器中包含了一個(gè)運(yùn)行的應(yīng)用程序、其依賴的庫(kù)、配置等資源。開發(fā)人員可以通過 Docker 容器快速搭建開發(fā)環(huán)境,運(yùn)維人員可以通過容器在不同服務(wù)器上部署應(yīng)用程序。
# 容器運(yùn)行示例 docker run -d --name myapp -p 80:3000 myapp:latest
使用 docker run 命令可以創(chuàng)建并運(yùn)行容器。參數(shù) -d 表示以守護(hù)進(jìn)程方式運(yùn)行容器,--name 指定容器的名稱,-p 指定端口映射關(guān)系(將容器內(nèi)部的 3000 端口映射到主機(jī)的 80 端口),myapp 指定容器鏡像的名稱,latest 是鏡像的標(biāo)簽。