Dokcer 的映象和倉庫
Docker映象原理
Docker映象是由檔案系統疊加而成,最底層是一個引導檔案系統,即bootfs
,類似於Linux/Unix的引導檔案系統,當一個容器啟動後,它將被移到記憶體中,而引導檔案系統則會被解除安裝,以留出更多的記憶體。
Docker映象的第二層是root檔案系統rootfs
,它位於引導檔案系統之上。rootfs
可以是一種或多種作業系統,如ubuntu。
-
列出映象
sudo docker images # 列出映象 sudo dcoker images fedora # 檢視 fedora 映象
本地映象都儲存在 Docker 宿主機的
/var/lib/docker
目錄下。映象從倉庫中下載下來,映象儲存在倉庫中,而倉庫存在於 Registry 中,預設的 Registry 是由 Dokcer 公司來運營的公共 Registry 服務,即 Docker Hub。
Docker Hub 中有2種型別的倉庫,使用者倉庫和頂層倉庫,使用者倉庫的映象都是由Docker使用者建立的,而頂層倉庫是由Docker內部的人來管理。
使用者倉庫名的命名由使用者名稱和倉庫名兩部分組成的。如 jamtur01/puppet。
每個映象倉庫都可以存放很多映象。為了區分同一倉庫的不同映象,Docker提供了標籤的功能,通過在倉庫名後面加上一個冒號和標籤名來指定該倉庫中的某一映象。如果沒有指定標籤,那麼Docker會自動下載
latest
標籤的映象。sudo docker run -t -i --name new_container ubuntu:12.04 /bin/bash
-
拉取Ubutun映象
sudo docker pull ubuntu:12.04
通過pull命令先將映象拉取到本地,可以節省一個新映象啟動一個容器的所需的時間。
-
查詢映象
sudo docker search puppet
可以利用該命令來查詢所有Docker Hub上公共的可用映象。
刪除映象
構建映象
前面是拉取已經構建好的帶有定製內容的 Docker 映象,那麼如何修改和管理自己的映象,並且更新和管理這些映象,有以下2中方法:
- 使用 docker commit 命令
- 使用 docker build 命令 和 Dockerfile檔案
用Docker的commit命令建立映象
使用commit命令,可以將此想像為我們往版本控制系統裡面提交變更,先建立一個容器,並在容器裡做出修改,就像修改程式碼一樣,最後再將修改提交為一個新的映象。
docker run -i -t ubuntu /bin/bash # 建立一個容器
apt-get -yqq update && apt-get -y install apache2 # 安裝apache2軟體包(容器內的shell)
docker commit jack/apche2:webserver # 提交定製容器
用Dockerfile構建映象
並不推薦使用docker commit
的方法來構建映象,相反,推薦使用Dcokerfile
的定義檔案和 docker build
命令來構建映象。
# version: 0.0.1
FROM ubuntu:14.04
MAINTAINER xxx "xxx@xx.com"
RUN apt-get update && apt-get install -y nginx
RUN echo "hi, I am in your container" > /usr/share/nginx/html/index.html
EXPOSE 80
Dockerfile 由一系列的指令和引數組成。每條指令,如FROM
,都必須為大寫字母,且後面要跟隨一個引數。
Dokcerfile 中的指令會按順序從上到下執行,所以應該更具需要合理安排指令的順序。
每條指令都會建立一個新的映象層並對映象進行提交。Docker 大體上按照如下流程執行Dockerfile
中的指令:
- Docker 從基礎映象執行一個容器
- 執行一條指令,對容器做出修改
- 執行類似
docker commit
操作,提交一個新的映象層 - Docker 再基於剛提交的映象執行一個新的容器
- 執行Dockerfile中的下一條指令,直到所有指令都執行完畢
-
構建映象
docker build -t="jack/static-web:v1" .
每一步的構建過程中都會將結果提交為映象,Docker的構造映象的過程中,它會將之前的映象層看作快取。想略過快取功能,可以使用
--no-cache
標誌。docker build --no-cache -t="Jack/static_web:v1"
-t
標誌為新映象設定了倉庫和名稱。
相關文章
- Dokcer製作nginx映象,提交映象至倉庫Nginx
- maven 多倉庫和映象設定Maven
- 私有 Composer 映象和倉庫的實現
- 搭建Harbor 映象倉庫
- Docker倉庫之Registry私有映象倉庫的搭建與使用Docker
- Harbor實現容器映象倉庫的管理和運維運維
- npm配置淘寶映象倉庫以及electron映象NPM
- CentOS部署Harbor映象倉庫CentOS
- Docker搭建私有映象倉庫Docker
- Docker映象倉庫清理的探索之路Docker
- Docker倉庫之Harbor企業級映象倉庫的搭建與使用Docker
- 建立 Docker 映象倉庫指令碼Docker指令碼
- 騰訊雲映象倉庫使用教程
- Harbor倉庫映象掃描原理
- Docker刪除倉庫中的映象問題Docker
- Harbor-私有映象倉庫的安裝部署
- Docker企業級映象倉庫HarborDocker
- 建立映象釋出到映象倉庫【不依賴docker環境】Docker
- 配置kuernetes叢集pod拉取私有映象倉庫中的映象
- 容器映象倉庫-Harbor的安裝及踩坑
- rhel 7.6使用映象做本地yum倉庫
- 在宿主機上搭建docker映象倉庫Docker
- containerd 配置使用私有映象倉庫 harborAI
- Git 本地倉庫和裸倉庫Git
- 使用阿里雲映象倉庫順利下載國外映象阿里
- 容器映象拉取不了,不防試試這個公益映象倉庫
- 企業級映象倉庫 Harbor 的安裝與配置
- 容器技術之Docker私有映象倉庫harborDocker
- 搭建私有YUM倉庫與內網映象站內網
- harbor映象倉庫證書過期問題
- Jenkins打Docker映象推送到私有倉庫JenkinsDocker
- 配置 containerd 映象倉庫完全攻略AI
- pom.xml 配置阿里雲映象倉庫XML阿里
- Ubuntu 22.04 阿里雲映象倉庫管理Ubuntu阿里
- Docker 企業級映象倉庫 Harbor 的搭建與維護Docker
- 如何打包Docker映象並推送到遠端倉庫Docker
- 用 Docker 部署前端?你有私有映象倉庫嗎Docker前端
- 如何將docker 映象上傳到docker hub倉庫Docker