1. 程式人生 > 其它 >[docker]docker 安裝及構建流程

[docker]docker 安裝及構建流程

docker 安裝及構建流程

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的映象中,然後釋出到任何流行的 Linux 或 Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。

docker的使用極大地簡化了開發部署流程,編寫一次程式碼,便可以在不同的機器上完美執行。

0. 基本概念

  • 映象(image)

如果把docker比喻為虛擬機器,那麼映象即為虛擬機器中的iso檔案。Docker 映象可以看作是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。

  • 容器(container)

如果把映象比為面嚮物件語言中的一個類,那麼容器即為類的一個例項。映象只是一堆可讀的系統檔案,容器是在其上層添加了可寫層的讀寫檔案,只有映象例項化成容器才是可執行的。

  • 倉庫(repository)

映象倉庫的概念與github是類似的,是存放各種映象的地方。當我們執行docker pull image的時候,docker預設是從dockerhub上去查詢我們所需要的映象檔案,然後執行下載操作。這類的映象倉庫就是docker預設的公共倉庫,所有人都可以直接檢視或下載、使用。有時為了內部分享使用,通常在本地搭建離線的私有化映象倉庫。

1. 下載安裝docker

  • 指令碼安裝

docker官方提供了十分便利的指令碼,在有網環境下,只需執行以下程式碼便可以安裝,使用aliyun國內源以加快下載速度。

curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
systemctl start docker
systemctl enable docker
  • apt/yum源下載

也可配置軟體源進行安裝:

deb:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

yum:

curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
  • 離線二進位制安裝

無網環境下使用二進位制包方式進行安裝,從網址https://download.docker.com/linux/找到對應系統版本以及系統架構下載對應包即可。

啟動docker後,檢視docker版本以確認是否安裝成功:

(base) wildkid1024@debian:~$ docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:48:21 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:46:14 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

2.拉取遠端基礎映象

開發專案之前需先拉取對應基礎映象環境,可從dockhub下載任意開發使用的必要環境,比如python:3.6:

(base) wildkid1024@debian:~$ docker pull python:3.6

3.6: Pulling from library/python
Digest: sha256:f8652afaf88c25f0d22354d547d892591067aa4026a7fa9a6819df9f300af6fc
Status: Image is up to date for python:3.6
docker.io/library/python:3.6

拉取完成可以測試下環境是否成功:

(base) wildkid1024@debian:~$ docker run -it python:3.6 python
Python 3.6.15 (default, Dec 21 2021, 12:03:22) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

3. 構建本地專案

以一個flask專案為例,演示如何構建本地專案:

首先拉取Python映象,並移動到專案目錄下,在專案根目錄下新增Dockerfile映象,內容如下:

FROM python:3.6
WORKDIR ./

COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

COPY . .

CMD ["python", "start.py"]

其中FROM宣告要使用的映象名稱及版本,WORKDIR宣告工作目錄,requirements中宣告flask版本和對應的python依賴。

然後構建映象,便會生成一個用於生產環境的docker映象:

docker build -t flask_app . 

4. 映象的匯入匯出

如果上述構建未出錯的話,那麼將在docker本地映象中找到兩個映象,通過執行docker images來找到他們。

通過以下匯入匯出映象命令可將生產映象匯出:

docker save image_id > image_export.tar 
docker load  <  image_export.tar 

-------- 完結 -----------