[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
-------- 完結 -----------