2. Docker基礎用法
Docker 架構
docker 是C/S架構的軟體,無論是client端還是Server端都是由 docker
一個程式提供,這個程式有很多子程式。
docker daemon 就是其中一個子程式,當執行 docker daemon
時,主機就執行成一個守護程序伺服器,它可以監聽在某個套接字上,為了安全,預設只提供 Unix sock 檔案的套接字。
docker 支援三種類型套接字:
- ipv4套接字
- ipv6套接字
- Unix sock套接字
DOCKER_HOSTS
是真正執行容器的主機,Container
: 容器,Images
: 映象
Clicent -> DOCKER_HOST 使用 https協議
DOCKER_HOST -> Registry 使用https協議
docker 有企業版和社群版之分:
- docker-ce 社群版
- docker-ee 企業版
倉庫
一個 docker registry
上有三種功能:
- 提供映象儲存的倉庫
- 提供使用者來獲取映象的時的認證
- 所有映象索引搜尋
一般來說,一個應用程式作為一個倉庫。而通過 映象名:標籤
的形式來描述一個具體的映象檔案。
如果在獲取映象時,只給出了映象名而沒有提供標籤,則獲取最新的映象檔案(latest 會指向倉庫中最新的版本),一個映象有多個標籤。docker 映象是隻讀檔案,不允許任何修改。
倉庫就是用來存放映象的, 映象和容器的關係,容器是基於映象建立的,就像程序和程式的關係。
映象是靜態的不會執行。容器是有生命週期的,類似與程序。
任何一個 resfull風格的API都是可以進行增刪改查的,docker也不例外
images、containers、networks、volumes、plugins 都是可以進行增刪改查的。
安裝和使用docker
安裝docker要求:
- 64 bits CPU
- Linux Kernel 3.10+
- Linux Kernel cgroups and namespaces
為了更好的支援docker 推薦使用 Centos7
安裝docker-ce
#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #yum install docker-ce -y #rpm -ql docker-ce /usr/bin/docker-init /usr/bin/docker-proxy /usr/bin/dockerd /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.socket === docker 加速 === #mkdir /etc/docker #vim /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com" ] } #systemctl start docker 可通過 docker info 檢視是否生效
檢視docker版本
#docker version
Client: Docker Engine - Community
Version: 19.03.13
API version: 1.40
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:03:45 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.13
API version: 1.40 (minimum version 1.12)
Go version: go1.13.15
Git commit: 4484c46d9d
Built: Wed Sep 16 17:02:21 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.3.7
GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
檢視docker詳細資訊
#docker info
常用操作命令
常見示例:
=== 下載映象到本地 ===
#docker pull nginx:alpine
=== 檢視映象 ===
#docker images
=== 檢視docker關於容器的操作 ===
#docker container --help
=== 檢視docker網路 ===
#docker network ls
=== 啟動一個最基本的容器 ===
#docker run --name b1 -it busybox:latest
=== 檢視容器b1的詳細資訊 ===
#docker inspect b1
=== 啟動停止的容器 ===
#docker start -ai b1
=== 啟動容器並執行在後臺 ===
#docker run --name web1 -d nginx:alpine
=== 繞過容器邊界進入容器 ===
#docker exec -it kvstor1 /bin/sh
=== 檢視容器日誌 ===
#docker logs web1
docker 容器狀態轉換各常用命令
docker0 是 nat 橋接模式。
一個容器只是為了執行一個程式,在容器中的程式不能跑在後臺,否則一啟動容器就終止。
因為docker容器僅在它的程序(PID為1)執行時,會保持執行。如果1號程序退出了, docker容器也就退出了。