Docker的構(gòu)成
-
Docker倉(cāng)庫(kù):https://hub.docker.com
-
Docker自身組件
Docker Client:Docker的客戶端
Docker Server:Docker daemon的主要組成部分,接受用戶通過(guò)Docker Client發(fā)出的請(qǐng)求,并按照相應(yīng)的路由規(guī)則實(shí)現(xiàn)路由分發(fā)
Docker鏡像:Docker鏡像運(yùn)行之后變成容器(docker run)
Docker的基本組成
- 鏡像
Docker 鏡像(Image)就是一個(gè)只讀的模板。鏡像可以用來(lái)創(chuàng)建 Docker 容器,一個(gè)鏡像可以創(chuàng)建很多容器。 - 容器
Docker 利用容器(Container)獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用,應(yīng)用程序或服務(wù)運(yùn)行在容器里面,容器就類似于一個(gè)虛擬化的運(yùn)行環(huán)境,容器是用鏡像創(chuàng)建的運(yùn)行實(shí)例。就像是Java中的類和實(shí)例對(duì)象一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器為鏡像提供了一個(gè)標(biāo)準(zhǔn)的和隔離的運(yùn)行環(huán)境,它可以被啟動(dòng)、開始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。 - 倉(cāng)庫(kù)
倉(cāng)庫(kù)(Repository)是集中存放鏡像文件的場(chǎng)所。倉(cāng)庫(kù)分為公開倉(cāng)庫(kù)(Public)和私有倉(cāng)庫(kù)(Private)兩種形式。
最大的公開倉(cāng)庫(kù)是 Docker Hub(https://hub.docker.com/),存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)的公開倉(cāng)庫(kù)包括阿里云 、網(wǎng)易云等。
docker鏡像文件類似于Java的類模板,而docker容器實(shí)例類似于java中new出來(lái)的實(shí)例對(duì)象。
鏡像的特性
當(dāng)容器啟動(dòng)時(shí),一個(gè)新的可寫層被加載到鏡像的頂部。這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。
所有對(duì)容器的改動(dòng) - 無(wú)論添加、刪除、還是修改文件都只會(huì)發(fā)生在容器層中。只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的。
docker基礎(chǔ)命令
systemctl start docker | 啟動(dòng)docker |
systemctl stop docker | 停止docker |
systemctl restart docker | 重啟docker |
systemctl status docker | 查看docker狀態(tài) |
systemctl enable docker | 開機(jī)啟動(dòng) |
docker info | 守護(hù)進(jìn)程的系統(tǒng)資源設(shè)置 |
docker search 鏡像名稱 | docker倉(cāng)庫(kù)的查詢 |
docker pull 鏡像名稱 | 下載docker倉(cāng)庫(kù) |
docker images | docker鏡像的查詢 |
docker rmi 鏡像名稱id | docker鏡像的刪除 |
docker ps | 容器的查詢 |
docker run 鏡像名稱+版本號(hào) | (docker run mysql:8.0.29)容器的創(chuàng)建啟動(dòng) |
docker start/stop | 容器啟動(dòng)停止 |
systemctl 是管理 Linux 的 systemd 服務(wù)的工具,systemctl 只能用于linux系統(tǒng)。
run命令擴(kuò)展
單一容器管理
每個(gè)容器被創(chuàng)建后,都會(huì)分配一個(gè)CONTAINER ID作為容器的唯一標(biāo)示,后續(xù)對(duì)容器的啟動(dòng)、停止、修改、刪除等所有操作,都是通過(guò)CONTAINER ID來(lái)完成偏向于數(shù)據(jù)庫(kù)概念中的主鍵。
docker ps --no-trunc | 查看 |
docker start/stop CONTAINER ID | 啟動(dòng)/停止 |
docker start/stop wordPress | 通過(guò)容器別名啟動(dòng)/停止 |
docker kill 容器id或容器名 | 強(qiáng)制停止容器 |
docker rm 容器id | 刪除已停止的容器 |
docker inspect wordPress | 查看容器所有基本信息 |
docker logs wordPress | 查看容器日志 |
docker stats wordPress | 查看容器所占用的系統(tǒng)資源 |
docker exec 容器名 容器內(nèi)執(zhí)行的命令 | 容器執(zhí)行命令 |
docker exec -it 容器名 /bin/bash | 登入容器的bash(我們可以使用該命令來(lái)創(chuàng)建mysql數(shù)據(jù)庫(kù),如下所示) |
docker-compose編排
compose是docker公司推出的一個(gè)工具軟件,可以管理多個(gè)Docker容器組成一個(gè)應(yīng)用。需要定義一個(gè)yaml格式的配置文件docker-compose.yaml,寫好多個(gè)容器之間的調(diào)用關(guān)系。然后,只要一個(gè)命令,就能同時(shí)啟動(dòng)/關(guān)閉這些容器。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-706838.html
compse的核心概念
- 一個(gè)文件:docker-compose.yaml
- 兩個(gè)要素:
- 服務(wù):一個(gè)個(gè)應(yīng)用容器實(shí)例,比如訂單微服務(wù),redis容器,mysql容器。
- 工程:由一組關(guān)聯(lián)的應(yīng)用容器組成的一個(gè)完整業(yè)務(wù)單元,在docker-compose.yaml文件中定義。
三個(gè)步驟
- 編寫Dockerfile定義各個(gè)微服務(wù)應(yīng)用并構(gòu)建出對(duì)應(yīng)的鏡像文件
- 使用docker-compose.yml定義一個(gè)完整的業(yè)務(wù)單元,按照先后順序安排好整體應(yīng)用中的各個(gè)容器服務(wù)
- 最后,執(zhí)行docker-compose up命令來(lái)啟動(dòng)并運(yùn)行整個(gè)應(yīng)用程序,完成一鍵部署上線
compse常用命令
docker-compse -h | 查看幫助 |
docker-compse up | 啟動(dòng)所有docker-compose服務(wù) |
docker-compse up -d | 啟動(dòng)所有docker-compose服務(wù)并后臺(tái)運(yùn)行 |
docker-compse down | 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像 |
docker-compse start | 啟動(dòng)服務(wù) |
docker-compse pause | 暫停服務(wù) |
docker-compse unpause | 恢復(fù)暫停 |
docker-compse rm | 刪除容器 |
docker-compse stop | 停止服務(wù) |
docker-compse restart | 重啟服務(wù) |
docker-compse config | 檢查配置 |
docker-compse config -q | 檢查配置,有問(wèn)題才有輸出 |
docker-compse logs yml里面的服務(wù)id | 查看容器輸出日志 |
docker-compse top | 展示當(dāng)前docker-compose編排過(guò)的容器進(jìn)程 |
docker-compse ps | 展示當(dāng)前docker-compose編排過(guò)的運(yùn)行的所有容器 |
docker-compse exec yml里面的服務(wù)id /bin/bash | 進(jìn)入容器實(shí)例內(nèi)部 |
如何編寫docker-compose
官網(wǎng):https://docs.docker.com/compose/compose-file/03-compose-file/。自然就是參考官網(wǎng)了,如果忘記了相關(guān)的語(yǔ)法看官網(wǎng)就行了,這個(gè)東西沒必要深究,會(huì)使用就可以了。而且,如果使用了GoLand編譯器安裝了Docker插件之后編寫docker-compose的時(shí)候都會(huì)有提示的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-706838.html
- 案例如下:
version: '3.0'
services:
mysql8:
image: mysql:8.0.29
command: --default-authentication-plugin=mysql_native_password #解決外部無(wú)法訪問(wèn)
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
# 設(shè)置初始化腳本
- ./script/mysql/:/docker-entrypoint-initdb.d/
ports:
# - 映射為13316端口
- "13316:3306"
redis:
image: 'bitnami/redis:latest'
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- '6379:6379'
到了這里,關(guān)于什么是Docker和Docker-Compose?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!