制作Docker鏡像

前言

因為最近在做大數(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ǎng)上有兩張圖對初學(xué)者很友好,讓人很容易理解 Docker 架構(gòu)思想:

docker架構(gòu)
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)

  1. 查看分區(qū)

    fdisk -l
    

    添加完磁盤后執(zhí)行上述命令會看到未分區(qū)的 dev/sdb

  2. 創(chuàng)建分區(qū)

    fdisk /dev/sdb
    
  3. 重啟 linux,并格式化
    對于添加新硬盤的方法執(zhí)行:mkfs.ext4 /dev/sdb1格式化

  4. 開機掛載

    • 如果設(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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容