乙個開源的應用容器引擎
誕生於2023年,基於go語言實現
docker開源讓開發者打包他們的應用以及依賴包到乙個輕量級、可移植的容器中,然後發布到任何流行的linux機器上
容器是完全使用沙盒機制,相互隔離
容器效能開銷極低,啟動快
docker從17.03版本之後分為ce和ee
解決軟體的跨環境遷移問題
配置docker映象加速器
啟動docker 服務:systemctl start docker
停止docker 服務:systemctl stop docker
重啟docker 服務:systemctl restart docker
檢視docker服務:systemctl status docker
開機啟動docker 服務:systemctl enable docker
檢視映象:docker images
搜尋映象:docker search 映象名
拉取映象:docker pull 映象名:版本號
刪除映象:docker rmi 映象id/映象名:版本
docker rmi 'docker images-q'
檢視容器:docker ps/ docker ps -a
建立容器
互動式容器:docker run -it --name=容器名 映象名:版本號 /bin/bash
守護程序(常用):docker run -id --name=容器名 映象名:版本號
進入容器:docker exec -it 容器名 /bin/bash
啟動容器:docker start 容器名
停止容器:docker stop 容器名
刪除容器:docker rm 容器名/容器id,只能刪除停止的容器
檢視容器資訊:docker inspect 容器名
資料卷
作用 建立啟動其他的容器,使用–volumes-from引數設定資料卷
詳情見部落格
詳情見部落格
docker映象本質是什麼?
docker中乙個centos映象為什麼只有200mb,而centos作業系統的iso檔案有幾個g?
docker中乙個tomcat映象為什麼有500mb,而乙個tomcat安裝包只有70mb?
程序排程子系統
程序通訊子系統
記憶體管理子系統
裝置管理子系統
檔案管理子系統
網路通訊子系統
作業控制子系統
docker映象是由特殊的檔案系統疊加而成
最底端是bootfs,並使用宿主機的bootfs
第二層是root檔案系統rootfs,稱為base image
然後再往上可以疊加其他的映象檔案
統一檔案系統(union file system)技術能夠將不同的層整合成乙個檔案系統,為這些層提供了乙個統一的視角,這樣就隱藏了多層的存在,在使用者的角度看來,只存在乙個檔案系統
乙個映象可以放在另乙個映象的上面。位於下面的映象成為父映象,最底層的映象成為基礎映象
當從乙個映象啟動容器時,docker會在最頂層載入乙個讀寫檔案系統作為容器
概念 指令
關鍵字作用
備註from
指定父映象
指定dockerfile基於那個image構建
maintainer
作者資訊
用來標明這個dockerfile誰寫的
label
標籤用來標明dockerfile的標籤 可以使用label代替maintainer 最終都是在docker image基本資訊中可以檢視
run執行命令
執行一段命令 預設是/bin/sh 格式: run command 或者 run [「command」 , 「param1」,「param2」]
cmd容器啟動命令
提供啟動容器時候的預設命令 和entrypoint配合使用.格式 cmd command param1 param2 或者 cmd [「command」 , 「param1」,「param2」]
entrypoint
入口一般在製作一些執行就關閉的容器中會使用
copy
複製檔案
build的時候複製檔案到image中
add新增檔案
build的時候新增檔案到image中 不僅僅侷限於當前build上下文 可以**於遠端服務
env環境變數
指定build時候的環境變數 可以在啟動的容器的時候 通過-e覆蓋 格式env name=value
arg構建引數
構建引數 只在構建的時候使用的引數 如果有env 那麼env的相同名字的值始終覆蓋arg的引數
volume
定義外部可以掛載的資料卷
指定build的image那些目錄可以啟動的時候掛載到檔案系統中 啟動容器的時候使用 -v 繫結 格式 volume [「目錄」]
expose
暴露埠
定義容器執行的時候監聽的埠 啟動容器的使用-p來繫結暴露埠 格式: expose 8080 或者 expose 8080/udp
workdir
工作目錄
user
指定執行使用者
指定build或者啟動的時候 使用者 在run cmd entrypont執行的時候的使用者
healthcheck
健康檢查
指定監測當前容器的健康監測的命令 基本上沒用 因為很多時候 應用本身有健康監測機制
onbuild
觸發器當存在onbuild關鍵字的映象作為基礎映象的時候 當執行from完成之後 會執行 onbuild的命令 但是不影響當前映象 用處也不怎麼大
stopsignal
傳送訊號量到宿主機
該stopsignal指令設定將傳送到容器的系統呼叫訊號以退出。
shell
指定執行指令碼的shell
指定run cmd entrypoint 執行命令的時候 使用的shell
docker build -f dockerfile檔案 -t 映象:版本
微服務架構的應用系統中一般包含若干個微服務,每個微服務一般會部署多個例項,如果每個微服務都要手動啟停,維護的工作會很麻煩
服務編排:按照一定的業務規則批量管理容器
docker compose是乙個編排多容 器分布式部署的工具,提供命令集管理容器化應用的完整開發周期,包括服務構建,啟動和停止。 安裝
使用docker compose編排nginx+springboot專案
mkdir ~/docker-compose
cd ~/docker-compose
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
expose:
- "8080"
mkdir -p ./nginx/conf.d
server
}
docker-compose up
詳情見部落格
詳情見部落格
docker容器安裝
docker 可以讓開發者打包他們的應用以及依賴包到乙個輕量級 可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。重啟docker服務 systemctl restart docker.service 拉取映象 tomcat mysql docker pull tomcat...
docker容器命令
1.docker run it name container name repository tag image id bin bash 互動方式啟動docker容器 例如docker run it name mycentos centos 7 bin bash 2.docker run d nam...
docker容器命令
這樣就建立了乙個新的centos容器了。那如果退出呢?通過exit命令就可以退出了 docker run di name 容器名稱 映象名稱 標籤 這個時候我們建立成功了,但是現在還是在本地,還沒有進入到centos容器中,但我們檢視的時候,發現容器已經是在執行了 那我們怎麼進入到這個centos容...