????????????
哈嘍!大家好,我是【Bug 終結(jié)者】 ,【CSDNJava領(lǐng)域優(yōu)質(zhì)創(chuàng)作者】??,阿里云受邀專家博主??,51CTO人氣博主?? .
一位上進心十足,擁有極強學習力的【Java領(lǐng)域博主】??????
??【Bug 終結(jié)者】博客的領(lǐng)域是【面向后端技術(shù)】的學習,未來會持續(xù)更新更多的【后端技術(shù)】以及【學習心得】。 偶爾會分享些前端基礎(chǔ)知識,會更新實戰(zhàn)項目,面向企業(yè)級開發(fā)應(yīng)用!
?? 如果有對【后端技術(shù)】、【前端領(lǐng)域】感興趣的【小可愛】,歡迎關(guān)注【Bug 終結(jié)者】??????
?????? 感謝各位大可愛小可愛! ??????
一、什么是云原生?
技術(shù)的變革,一定是思想先行,云原生是一種構(gòu)建和運行應(yīng)用程序的方法,是一套技術(shù)體系和方法論。云原生(CloudNative)是一個組合詞,Cloud+Native。Cloud表示應(yīng)用程序位于云中,而不是傳統(tǒng)的數(shù)據(jù)中心;Native表示應(yīng)用程序從設(shè)計之初即考慮到云的環(huán)境,原生為云而設(shè)計,在云上以最佳姿勢運行,充分利用和發(fā)揮云平臺的彈性+分布式優(yōu)勢。
Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;2015年,云原生剛推廣時,Matt Stine在《遷移到云原生架構(gòu)》一書中定義了符合云原生架構(gòu)的幾個特征:12因素、微服務(wù)、自敏捷架構(gòu)、基于API協(xié)作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采訪時又改了口風,將云原生架構(gòu)歸納為模塊化、可觀察、可部署、可測試、可替換、可處理6特質(zhì);而Pivotal最新官網(wǎng)對云原生概括為4個要點:DevOps+持續(xù)交付+微服務(wù)+容器。
云原生是一種構(gòu)建和運行程序的方法,是一套技術(shù)體系和方法論
!
二、什么是Docker?
Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的或操作系統(tǒng)的機器上,也可以實現(xiàn)。容器是完全使用機制,相互之間不會有任何接口。
Docker官網(wǎng)
Docker是一個開源的應(yīng)用容器引擎
!
三、Docker的好處
??模塊化
Docker 容器化方法非常注重在不停止整個應(yīng)用的情況下 ,單獨截取部分應(yīng)用進行更新或修復的能力。除了這種基于微服務(wù)的方法,您還可以采用與面向服務(wù)的架構(gòu)(SOA)類似的使用方法,在多個應(yīng)用間共享進程。
?層和鏡像版本控制
每個 Docker 鏡像文件都包含多個層。這些層組合在一起,構(gòu)成單個鏡像。每當鏡像發(fā)生改變時,就會創(chuàng)建一個新的鏡像層。用戶每次發(fā)出命令(例如 run 或 copy)時,都會創(chuàng)建一個新的鏡像層。
Docker 重復使用這些層來構(gòu)建新容器,借此幫助加快流程構(gòu)建。鏡像之間會共享中間變化,從而進一步提升速度、規(guī)模以及效率。版本控制是鏡像層本身自帶的能力。每次發(fā)生新的更改時,您大都會獲得一個內(nèi)置的更改日志,實現(xiàn)對容器鏡像的全盤管控。
??回滾
回滾也許是層最值得一提的功能。每個鏡像都擁有多個層。舉例而言,如果您不喜歡迭代后的鏡像版本,完全可以通過回滾,返回之前的版本。這一功能還支持敏捷開發(fā)方法,幫助持續(xù)實施集成和部署(CI/CD),使其在工具層面成為一種現(xiàn)實。
?快速部署
啟動和運行新硬件、實施部署并投入使用,這在過去一般需要數(shù)天時間。投入的心力和成本往往也讓人不堪重負。基于 Docker 的容器可將部署時間縮短到幾秒。通過為每個進程構(gòu)建容器,您可以快速將這些類似進程應(yīng)用到新的應(yīng)用程序中。而且,由于無需啟動操作系統(tǒng)即可添加或移動容器,因此大幅縮短了部署時間。除此之外,得益于這種部署速度,您可以輕松無虞、經(jīng)濟高效地創(chuàng)建和銷毀容器創(chuàng)建的數(shù)據(jù)。
因此,Docker 技術(shù)是一種更加精細、可控、基于微服務(wù)的技術(shù),可為企業(yè)提供更高的效率價值。
四、Linux下安裝Docker
?環(huán)境準備
查看Linux系統(tǒng)內(nèi)核
uname -r
查看系統(tǒng)配置
cat /etc/os-release
系統(tǒng)為CentOS 7 最好!
??安裝Docker
先查看本機是否存在Docker,刪除舊版本Docker
查看docker 版本
docker version
沒有docker,我們執(zhí)行以下命令,刪除殘余文件
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
進入Linux根目錄,安裝Docker
# 安裝yum-utils包(提供yum-config-manager 實用程序)并設(shè)置穩(wěn)定的存儲庫。
yum install -y yum-utils
# 安裝阿里云配置
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝Docker 最新引擎
yum install docker-ce docker-ce-cli containerd.io
輸入y確認即可!
??配置阿里云加速鏡像
打開阿里云控制臺,彈性計算 --> 容器與鏡像服務(wù)
打開之后選擇 鏡像工具 --> 鏡像加速器,復制內(nèi)容即可
進入Linux服務(wù)器根據(jù)步驟配置鏡像加速器
# 創(chuàng)建docker文件夾
sudo mkdir -p /etc/docker
# 打開文件并配置內(nèi)容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pfjide5p.mirror.aliyuncs.com"]
}
EOF
# 重啟服務(wù)
sudo systemctl daemon-reload
# 啟動docker
sudo systemctl restart docker
新建文件夾
配置內(nèi)容,并重啟服務(wù)
根據(jù)步驟一步步創(chuàng)建即可!
?測試啟動Docker
查看Docker啟動狀態(tài)
systemctl status docker
查看Docker版本,沒有發(fā)生錯誤就是啟動成功!
運行 hello-world鏡像
docker run hello-world
可以看到?jīng)]有在本地沒有找到鏡像 hello-world,docker會去遠程倉庫 DockerHub下載鏡像
!
下載完畢后查看鏡像文件
docker images
五、Docker常用命令
Docker常用API
??基礎(chǔ)命令
docker version # 查看docker版本
docker info # 查看docker系統(tǒng)信息,包括鏡像和容器的數(shù)量
docker 命令 --help # 查看命令的幫助文檔,可選參數(shù)
docker COMMAND --help
??鏡像命令
DockerHub上查看鏡像文件詳細信息!
查看鏡像文件
docker images
REPOSITORY # 鏡像的倉庫源
TAG # 鏡像的標簽
IMAGE ID # 鏡像id
CREATED # 鏡像的創(chuàng)建時間
SIZE # 鏡像的大小
### 可選的參數(shù)
-a/-all # 列出所有的鏡像
-q/--quiet # 只顯示鏡像的id
搜索Docker鏡像
docker search
# 可選的參數(shù)
Search the Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
我們可以根據(jù)stars數(shù)來過濾鏡像
# 搜索mysql鏡像stars數(shù)大于5000的
docker search mysql --filter=STARS=5000
下載鏡像
docker pull 鏡像名 # 下載最新鏡像
docker pull 鏡像名:5 # 下載指定版本鏡像
[root@iZ2zejargdc3umcg1is2mcZ /]# docker pull mysql
Using default tag: latest # 下載最新版本MySQL
latest: Pulling from library/mysql
72a69066d2fe: Pull complete # 分層下載,docker image的核心-聯(lián)合文件系統(tǒng)
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
刪除鏡像
# 根據(jù)鏡像id刪除指定鏡像
docker rmi -f 鏡像id
# 根據(jù)鏡像id刪除多個鏡像
docker rmi -f 鏡像id 鏡像id 鏡像id
# 刪除全部的鏡像
docker rmi -f $(docker images -aq)
???容器命令
拉取一個CentOS鏡像
docker pull centos
運行容器命令
docker run 【參數(shù)】 image
#參數(shù)說明
--name="名字" 指定容器名字
-d 后臺方式運行
-it 使用交互方式運行,進入容器查看內(nèi)容
-p 指定容器的端口
(
-p ip:主機端口:容器端口 配置主機端口映射到容器端口
-p 主機端口:容器端口
-p 容器端口
)
-P 隨機指定端口(大寫的P)
運行并進入容器centos
docker run -it centos /bin/bash
退出容器
exit
Linux 內(nèi)有安裝了一個centos,區(qū)分了系統(tǒng)文件,文件顏色不同
我們可以看到,使用exit退出會直接停止容器,那怎么才能不停止容器退出呢
ctrl + p + q # 退出容器但不停止容器
列出運行過的容器命令:
docker ps
# 列出當前正在運行的容器
-a # 列出所有容器的運行記錄
-n=? # 顯示最近創(chuàng)建的n個容器
-q # 只顯示容器的編號
刪除容器命令:
docker rm 容器id #刪除指定的容器,不能刪除正在運行的容器,強制刪除使用 rm -f
docker rm -f $(docker ps -aq) #刪除所有的容器
docker ps -a -q|xargs docker rm #刪除所有的容器
啟動和停止容器命令
docker start 容器id #啟動容器
docker restart 容器id #重啟容器
docker stop 容器id #停止當前運行的容器
docker kill 容器id #強制停止當前容器
??其它常用命令
查看容器日志
docker logs --help
docker logs -tf 容器id
docker logs --tail number 容器id #num為要顯示的日志條數(shù)
# docker容器后臺運行,必須要有一個前臺的進程,否則會自動停止
編寫shell腳本循環(huán)執(zhí)行,使得centos容器保持運行狀態(tài)
docker run -d centos /bin/sh -c "while:true; do echo xiaowang; sellp 2; done"
查看容器中的進程信息
docker top 容器id
查看容器元數(shù)據(jù)
docker inspect
進入當前正在運行的容器
docker exec -it 容器id /bin/bash # 進入容器新開終端,可操作
docker attach 容器id # 進入當前容器正在執(zhí)行的進程,不會啟動新的線程
拷貝文件
#拷貝容器的文件到主機中
docker cp 容器id:容器內(nèi)路徑 目的主機路徑
#拷貝宿主機的文件到容器中
docker cp 目的主機路徑 容器id:容器內(nèi)路徑
Docker命令圖解
?小結(jié)
以上就是【Bug 終結(jié)者】對 【云原生】Docker入門 – 阿里云服務(wù)器環(huán)境下安裝Docker簡單的概述,云原生是趨勢,Docker容器是一個非常好的工具,獨立部署,不依賴于Linux,簡化了我們的開發(fā),更高效率的開發(fā),一次部署,提交鏡像,再次直接拉取執(zhí)行即可,省去了不必要的部署工作,可謂是開發(fā)利器!文章來源:http://www.zghlxwxcb.cn/news/detail-743035.html
如果這篇【文章】有幫助到你,希望可以給【Bug 終結(jié)者】點個贊??,創(chuàng)作不易,如果有對【后端技術(shù)】、【前端領(lǐng)域】感興趣的小可愛,也歡迎關(guān)注?????? 【Bug 終結(jié)者】??????,我將會給你帶來巨大的【收獲與驚喜】??????!文章來源地址http://www.zghlxwxcb.cn/news/detail-743035.html
到了這里,關(guān)于【云原生】Docker入門 -- 阿里云服務(wù)器環(huán)境下安裝Docker的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!