學(xué)習(xí) Docker 對(duì)寫 PHP 很有必要,主要有以下幾點(diǎn)原因:
首先,保證開發(fā)環(huán)境一致。不同開發(fā)者的系統(tǒng)和配置不同易導(dǎo)致環(huán)境差異問題,而 Docker 可通過 Dockerfile 明確指定 PHP 版本、擴(kuò)展及依賴項(xiàng),確保開發(fā)環(huán)境一致,提高開發(fā)效率。
其次,簡(jiǎn)化部署。開發(fā)環(huán)境構(gòu)建好的 Docker 鏡像可直接在生產(chǎn)服務(wù)器運(yùn)行,避免手動(dòng)安裝配置的繁瑣,降低部署風(fēng)險(xiǎn)。
最后,提供資源隔離。Docker 容器為 PHP 應(yīng)用提供獨(dú)立的文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程空間,一個(gè)應(yīng)用問題不影響其他應(yīng)用和系統(tǒng)服務(wù),提高穩(wěn)定性和安全性,還便于快速擴(kuò)展和遷移。
啟動(dòng):systemctl start docker
停止:systemctl stop docker
重啟:systemctl restart docker
查看狀態(tài):systemctl status docker
開機(jī)啟動(dòng):systemctl enable docker
查看概要信息:docker info
查看總體幫助文檔:docker --help
查看指令幫助文檔:docker 具體指令 --help
docker images 列出本地主機(jī)上的鏡像
docker images -a 列出本地所以的鏡像(含歷史)
docker images -q 只顯示鏡像id
docker search [OPTIONS] 搜索鏡像(OPTIONS鏡像名字)
docker search --limit:10 [OPTIONS] 搜索鏡像列出10個(gè)
docker pull [OPTIONS]:[TAG] 下載鏡像(OPTIONS鏡像名字、TAG版本號(hào),不填默認(rèn)最新版本)
docker system df 查看數(shù)據(jù)占用空間
docker rmi -f [鏡像ID] 刪除單個(gè)鏡像
docker rmi -f [鏡像TAG] [鏡像TAG] 刪除多個(gè)鏡像
docker rmi -f $(docker images -qa) 刪除全部鏡像
docker run [鏡像images]
-it 啟動(dòng)鏡像的終端
exit 退出終端
--name=[容器改名名稱]
例子:
新建容器并進(jìn)入容器終端
docker run -it ba6acccedd29
新建進(jìn)入容器+終端+容器名為myubuntu
docker run -it --name=myubuntu ba6acccedd29
docker
ps 列出正在運(yùn)行的容器
-a 列出正在運(yùn)行的容器+歷史運(yùn)行過的
-l 列出最近創(chuàng)建的容器
-n [數(shù)量] 列出最近n個(gè)創(chuàng)建的容器
-q 列出容器編號(hào)
-p [主機(jī)端口]:[容器內(nèi)部端口] 端口映射
-v [主機(jī)文件夾路徑]:[容器文件夾路徑] 同步文件夾內(nèi)容
--net [網(wǎng)段]
--privileged=true root權(quán)限,一般配合-v使用
exit 退出容器終端,容器會(huì)停止
ctrl+p+q(按鍵) 退出容器終端,容器不會(huì)停
ctrl p ctrl q
docker start [容器ID或者容器名] 啟動(dòng)已停止運(yùn)行的容器
docker restart [容器ID或者容器名] 重啟容器
docker stop [容器ID或者容器名] 停止容器
dokcer kill [容器ID或者容器名] 強(qiáng)制停止容器
docker rm [容器ID或者容器名] 刪除已停止的容器
-f 強(qiáng)制刪除容器(包括正在運(yùn)行的容器)
$(docker ps -a -q) 強(qiáng)制刪除所有容器(包括正在運(yùn)行的容器-謹(jǐn)慎使用)
希望docker的服務(wù)是后臺(tái)運(yùn)行的
docker run -d [容器名] 有些并不可行(一般-it較好)
docker logs [容器id]
docker top [容器id]
docker inspect [容器id]
exec在容器中打開新的終端,并且啟動(dòng)新進(jìn)程,exit退出不會(huì)導(dǎo)致容器停止--==推薦使用==
attach直接進(jìn)入容器啟動(dòng)命令終端,不會(huì)啟動(dòng)新的進(jìn)程,exit會(huì)導(dǎo)致容器停止
docker exec -it [容器id] /bin/bash 進(jìn)入
docker attach [容器id] 重新進(jìn)入
docker cp [容器id]:[容器內(nèi)路徑] [主機(jī)目錄]
docker export [容器id] > [文件名].tar
cat [文件名].tar | docker import - [鏡像用戶]/[鏡像名]:[鏡像版本號(hào)]
docker commit -m="你的描述信息" -a="作者" [容器id] [鏡像用戶]/[鏡像名]:[鏡像版本號(hào)]
docker pull registry
相當(dāng)于本地的dockers hub
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
curl -XGET http://[您的ip地址(0.0.0.0)]:5000/v2/_catalog
docker tag [鏡像名稱]:[鏡像版本號(hào)] [ip地址]:5000/[鏡像名稱]:[鏡像版本號(hào)]
docker默認(rèn)不允許http推送鏡像
修改配置文件 /etc/docker/daemon.json
如果不生效,重啟docker服務(wù)
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries": ["您的ip:5000"]
}
docker push [鏡像名]:[版本號(hào)]
docker pull [ip地址]:5000/[鏡像名]:[版本號(hào)]
Docker掛載主機(jī)目錄訪問如果出現(xiàn)cannot open directory .: Permission denied
解決辦法:在掛載目錄后多加一個(gè)--privileged=true參數(shù)即可
docker run -it --privileged=true -v /[主機(jī)絕對(duì)目錄]:/[容器目錄] [鏡像名]
:rw 讀寫權(quán)限(默認(rèn))
:ro 只讀權(quán)限
docker run -it --privileged=true -v /[主機(jī)絕對(duì)目錄]:/[容器目錄]:ro [鏡像名]
docker image ls -f dangling=true
docker image prune
docker network ls 查看newtwork列表
connect 將容器連接到 network
create [name] 創(chuàng)建 network
disconnect 斷開容器與 network 連接
inspect [name] 顯示一個(gè)或多個(gè)的詳細(xì)信息
prune 刪除所有未使用的network
rm [name] 刪除 network
--network bridge ,默認(rèn)使用docker0
--network host 指定
--network none 指定
--netwokr container:[name/容器id]
大佬 要不要整個(gè)完整的.. 比如手頭的項(xiàng)目 怎么使用docker的案例..
就我個(gè)人來說 把項(xiàng)目部署到 服務(wù)器 的步驟是這樣的
1.裝寶塔
2.裝nginx+php+mysql+redis 基本環(huán)境
3.通過git拉取項(xiàng)目 配置端口 偽靜態(tài) 修改數(shù)據(jù)庫(kù)配置
至此 項(xiàng)目就部署完畢了
4.本地更新項(xiàng)目后 git 提交 ,然后到服務(wù)器 進(jìn)到項(xiàng)目里面 git pull 拉取一下 完成了項(xiàng)目的更新
就我這些場(chǎng)景的話 , 用 docker 是怎么個(gè)用法呢。 一直沒弄過 整不明白
收藏吃灰