📢Docker本身并不是容器,它是建立容器的工具,是應用容器引擎。
📢想要搞懂Docker,兩句口号就行。
第一句是“Build, Ship and Run”(搭建、發送、運作,三闆斧)
第二句是“Build once,Run anywhere”(搭建一次,到處能用)
1️⃣💭虛拟機和Docker的對比
- 虛拟機屬于虛拟化技術,Docker這樣的容器技術。
- 虛拟機雖然可以隔離出很多“子電腦”,但占用空間更大,啟動更慢,虛拟機軟體可能還要花錢(例如VMWare)。而容器技術恰好沒有這些缺點,它不需要虛拟出整個作業系統,隻需要虛拟一個小規模的環境(類似“沙箱”)。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CM5YmNzQGNjF2N4UGOklTOjlTN0MmYwQTMiRzN5YjZl9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
2️⃣💬Docker元件
- 用戶端、主控端、倉庫
- images、Container、Registry
Image
image是分層的,并且每一層都可以添加改變删除檔案,成為一個新的image。不同的image可以共享相同的layer。image本身是read-only的。
Container
Container由image建立,并在image layer上建立一可讀寫的Container layer(R/W層)。Writeble Container層的讀寫操作僅是記錄,并不會對下面的read-only Image産生影響。
Registry
倉庫,用于存放鏡像的地方(分為公有和私有倉庫)。可以直接使用docker pull指令将倉庫中的鏡像拉到本地,預設的倉庫Docker的官方倉庫Docker Hub Registry。
3️⃣🎈Docker指令總覽
能把下面兩幅圖上的指令全都看懂并且會操作說明都把握住了😚
4️⃣🍉DockerFile指令
DockerFile建構屬于自己的最完美的鏡像
官方的Centos7為例
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20201113" \
org.opencontainers.image.title="CentOS Base Image" \
org.opencontainers.image.vendor="CentOS" \
org.opencontainers.image.licenses="GPL-2.0-only" \
org.opencontainers.image.created="2020-11-13 00:00:00+00:00"
CMD ["/bin/bash"]
📢下一篇文章帶兄弟們一起學習Docker更深層的東西,看看年薪20W的工程師是怎樣用的。
📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
📢未來很長,值得我們全力奔赴更美好的生活✨