前言
因為最近在做大數(shù)據(jù)分析大作業(yè)熄攘,要求將算法封裝進 Docker 荆责,因此臨時學(xué)了一下 Docker 方面的知識映琳,在這里簡單記錄一下。
Docker 安裝
Docker 安裝比較簡單智玻,可以參考網(wǎng)上教程
Docker 架構(gòu)
使用 Docker 前需要首先理解 Docker 的架構(gòu),因為以前自己只使用過 Vmware/VirtualBox 之類虛擬機芙代,所以之前對 Docker 的理解也跟對 Vmware/VirtualBox 認識差不多吊奢,但學(xué)習(xí)之后發(fā)現(xiàn)他們還是有很大區(qū)別的, Docker 中融匯了面向?qū)ο蟮乃枷胛婆搿>W(wǎng)上有兩張圖對初學(xué)者很友好页滚,讓人很容易理解 Docker 架構(gòu)思想:
- Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式,使用遠程 API 來管理和創(chuàng)建 Docker 容器铺呵。
- Docker 容器通過 Docker 鏡像來創(chuàng)建裹驰。
- 容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶ο笈c類。
Docker | 面向?qū)ο?/th> |
---|---|
容器 | 對象 |
鏡像 | 類 |
理解了上面幾句話片挂,大概就能跟我一樣簡單使用了幻林,Docker hub 倉庫其實就相當(dāng)于打包了很多常用的 Docker 鏡像,我們可以直接 pull 下來音念,啟動成容器來在本地跑沪饺,省去了很多搭環(huán)境浪費的時間。
制作 Docker 鏡像
當(dāng)然有時候我們還需要自己造輪子闷愤,按自己的需求整葡、邏輯來封裝一個鏡像來給別人使用等,所以這時候就需要學(xué)會編寫 Dockerfile 了讥脐,關(guān)于 Dockerfile 的編寫這里有個博客簡單介紹了一些語法規(guī)則遭居,對于我這次的任務(wù)來說已經(jīng)夠用了,如果任務(wù)更復(fù)雜就需要參考官方文檔來好好研究啦攘烛。下面是我為這次封裝算法編寫的 Dockerfile :
from continuumio/anaconda3 # 繼承 continuumio/anaconda3 鏡像
MAINTAINER fighter fighterhit@163.com
COPY code /root/ # 把 code 文件夾復(fù)制到鏡像內(nèi)部 /root 下
WORKDIR /root
CMD jupyter notebook --ip=0.0.0.0 --allow-root # docker run 時容器內(nèi)執(zhí)行的命令
寫好 Dockerfile 后執(zhí)行 build 命令生成鏡像:
docker build . -t fighter:lastest
導(dǎo)入/導(dǎo)出 Docker 鏡像
將鏡像導(dǎo)出為 tar 包:
docker save -o BDProject.tar fighter:latest
導(dǎo)入 tar 包:
docker load < BDProject.tar
給 Vmware 增加磁盤
因為自己是在 Vmware 虛擬機內(nèi)做的,在導(dǎo)出制作的 docker 鏡像時中途出錯镀首,顯示磁盤空間不夠坟漱,后來給 VMWare 加了一個磁盤執(zhí)行df -h
也沒有顯示增加的磁盤,后來發(fā)現(xiàn)還需要格式化并掛載磁盤更哄,詳細過程見擴展或者添加硬盤給VMware的Linux操作系統(tǒng):
-
查看分區(qū)
fdisk -l
添加完磁盤后執(zhí)行上述命令會看到未分區(qū)的
dev/sdb
-
創(chuàng)建分區(qū)
fdisk /dev/sdb
重啟 linux芋齿,并格式化
對于添加新硬盤的方法執(zhí)行:mkfs.ext4 /dev/sdb1格式化-
開機掛載
- 如果設(shè)置root登錄可以直接修改“etc/profile”文件使每次系統(tǒng)開機自動掛載該分區(qū)到“/disk”目錄下。我們再該文件的末尾添加“mount /dev/sdb1/disk”成翩,或者mount/dev/sda4 /disk保存重啟系統(tǒng)觅捆。
- 或者更加通用專業(yè)的方法修改/etc/fsrab文件加入/dev/sda4 /disk4 ext2 defaults 0 0,并保存麻敌,實現(xiàn)開機自動掛載栅炒。
這時我們可以查看/disk文件的磁盤空間會是很大的,我們可以將一些不常用的大容量文件放在該目錄下以節(jié)省系統(tǒng)的磁盤空間。
參考:
docker鏡像的導(dǎo)入和導(dǎo)出
Docker 容器鏡像刪除
虛擬機VMware新增硬盤無法識別問題
如何擴展或者添加硬盤給VMware的Linux操作系統(tǒng)