Docker架構(gòu)總覽

最核心的是 Docker Daemon 我們稱之為 Docker 守護進程,也就是 Server 端,Server 端可以部署在遠程,也可以部署在本地,因為 Server 端與客戶端 ( Docker Client ) 是通過 Rest API 進行通信。
Docker CLI 實現(xiàn)容器和鏡像的管理,為用戶提供統(tǒng)一的操作界面,這個客戶端提供一個只讀的鏡像,然后通過鏡像可以創(chuàng)建一個或者多個容器 (container),這些容器可以只是一個 RFS ( Root File System ),也可以是一個包含了用戶應用的 RFS。容器在 Docker Client 中只是一個進程,兩個進程是互不可見的。
用戶不能與 server 直接交互,但可以通過與容器這個橋梁來交互,由于是操作系統(tǒng)級別的虛擬技術(shù),中間的損耗幾乎可以不計
Docker核心概念
| 相關(guān)概念 | 說明 |
|---|---|
| Docker 鏡像(Images) | Docker 鏡像是用于創(chuàng)建 Docker 容器的模板。 |
| Docker 容器 (Container) | 容器是獨立運行的一個或一組應用。 |
| Docker 客戶端 (Client) | Docker 客戶端通過命令行或者其他工具使用 Docker API 與 Docker 的守護進程通信。 |
| Docker 主機 (Host) | 一個物理或者虛擬的機器用于執(zhí)行 Docker 守護進程和容器 |
| Docker 倉庫 (Registry) | Docker 倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。 |
| Docker Machine | Docker Machine 是一個簡化 Docker 安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝 Docker,比如 VirtualBox、 Digital Ocean、Microsoft Azure。 |
常用操作命令
容器相關(guān)命令
1. 運行 docker run
示例:docker run ubuntu:15.10 /bin/echo "Hello world"
參數(shù):
ubuntu:15.10: 鏡像名(先檢測本地主機上查找鏡像是否存在,如果不存在則去 Docker Hub 下載公共鏡像)
/bin/echo "Hello world":在鏡像中運行的命令
其他參數(shù):
| 參數(shù) | 說明 |
|---|---|
| -i | 允許你對容器內(nèi)的標準輸入 (STDIN) 進行交互 |
| -t | 進入指定系統(tǒng)的終端(偽終端) |
| -d | 后臺運行(創(chuàng)建一個以進程方式運行的容器) |
| -P | 將容器內(nèi)部使用的網(wǎng)絡端口映射到我們使用的主機上 |
| -p | 設置端口號(-p 127.0.0.1:5001:5000/udp 通過 5001 訪問 5000 端口設置為 udp ) |
| --name | 設置啟動容器名 |
| -v | 設置掛載目錄(如:-v $PWD/www:/www 將主機中當前目錄下的 www 掛載到容器的 / www) |
2. 查看正在運行的 docker 容器 docker ps
返回內(nèi)容說明
| 字段名 | 說明 |
|---|---|
| CONTAINER ID | 容器 ID |
| IMAGE | 鏡像名 |
| COMMAND | 執(zhí)行命令 |
| CREATED | 創(chuàng)建時間 |
| STATUS | 狀態(tài) |
| PORTS | 端口信息 |
| NAMES | 名稱 |
其他參數(shù)
| 參數(shù) | 說明 |
|---|---|
| -l | 顯示最后創(chuàng)建的容器(包括所有狀態(tài)) |
| -a | 顯示所有容器(默認顯示剛剛運行) |
| -n | 顯示最后創(chuàng)建的n 條 |
| -q | 只顯示 id |
| -s | 顯示文件大小 |
3. 停止容器 docker stop id/name
4. 啟動容器 docker start id/name
5. 刪除容器 docker rm id/name
6. 查看容器運行日志 docker logs id/name
7. 查看端口映射情況 docker port id
8. 查看容器內(nèi)部運行的進程 docker top id/name
9. 查看Docker底層信息 docker inspect id/name
10. 刪除容器 docker rm id/name 刪除時必須停止不然報錯
鏡像相關(guān)命令
1. 查看有哪些鏡像 docker images
2. 搜索鏡像 docker search name
3. 下拉鏡像 docker pull name
4. 創(chuàng)建鏡像 docker bulid
流程:
創(chuàng)建文件 Dockerfile
docker build -t runoob/centos:6.7 ./
-t指定要創(chuàng)建的目標鏡像名
最后一個參數(shù)是 Dcokerfile 文件位置,可以絕對可以相對Dcokerfile 文件內(nèi)容:
內(nèi)容說明:
FROM: 指定使用哪個鏡像源
RUN: 告訴 docker 在鏡像內(nèi)執(zhí)行的命令
內(nèi)容示例:
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
5. 使用 docker commit 創(chuàng)建副本
在一個新的容器中安裝你想要的軟件然后對出這個容器可以獲取到 ID
然后使用 docker commit -m="has update" -a="aaa" e218edb10161 aaa/ubuntu:v2 來創(chuàng)建一個副本
參數(shù)說明:
| 參數(shù) | 說明 |
|---|---|
| -m | 提交的描述信息 |
| -a | 指定鏡像作者 |
| e218edb10161 | 容器ID |
| runoob/ubuntu:v2 | 指定要創(chuàng)建的目標鏡像名 |