一已球、認(rèn)識(shí)docker
Docker 是一個(gè)開源的應(yīng)用容器引擎渺鹦,基于?Go 語言?并遵從 Apache2.0 協(xié)議開源晾腔。
Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)意推、可移植的容器中舀凛,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
容器是完全使用沙箱機(jī)制抄淑,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低屠凶。
二、Docker的應(yīng)用場景
Web 應(yīng)用的自動(dòng)化打包和發(fā)布肆资。
自動(dòng)化測(cè)試和持續(xù)集成矗愧、發(fā)布。
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺(tái)應(yīng)用郑原。
從頭編譯或者擴(kuò)展現(xiàn)有的 OpenShift 或 Cloud Foundry 平臺(tái)來搭建自己的 PaaS 環(huán)境唉韭。
三、Docker 的優(yōu)點(diǎn)
Docker 是一個(gè)用于開發(fā)犯犁,交付和運(yùn)行應(yīng)用程序的開放平臺(tái)属愤。Docker 使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu)分開,從而可以快速交付軟件酸役。借助 Docker住诸,您可以與管理應(yīng)用程序相同的方式來管理基礎(chǔ)架構(gòu)。通過利用 Docker 的方法來快速交付涣澡,測(cè)試和部署代碼只壳,您可以大大減少編寫代碼和在生產(chǎn)環(huán)境中運(yùn)行代碼之間的延遲。
1暑塑、快速吼句,一致地交付您的應(yīng)用程序
Docker 允許開發(fā)人員使用您提供的應(yīng)用程序或服務(wù)的本地容器在標(biāo)準(zhǔn)化環(huán)境中工作,從而簡化了開發(fā)的生命周期事格。
容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程惕艳,請(qǐng)考慮以下示例方案:
您的開發(fā)人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作驹愚。
他們使用 Docker 將其應(yīng)用程序推送到測(cè)試環(huán)境中远搪,并執(zhí)行自動(dòng)或手動(dòng)測(cè)試。
當(dāng)開發(fā)人員發(fā)現(xiàn)錯(cuò)誤時(shí)逢捺,他們可以在開發(fā)環(huán)境中對(duì)其進(jìn)行修復(fù)谁鳍,然后將其重新部署到測(cè)試環(huán)境中,以進(jìn)行測(cè)試和驗(yàn)證劫瞳。
測(cè)試完成后倘潜,將修補(bǔ)程序推送給生產(chǎn)環(huán)境,就像將更新的鏡像推送到生產(chǎn)環(huán)境一樣簡單志于。
四涮因、好了簡單介紹了下docker,下面進(jìn)入正題
1伺绽、linux系統(tǒng)centos7.2 作為宿主機(jī)
2养泡、安裝docker容器
步驟:
2.1嗜湃、安裝需要的依賴包--命令:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.2、設(shè)置阿里云鏡像源--命令:sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3购披、安裝 Docker-CE--命令:sudo yum install docker-ce
2.4刚陡、啟動(dòng)docker服務(wù)--命令:service docker start
好了到這里docker容器已經(jīng)下載安裝好了屿附,下面就可以在docker里安裝需要的環(huán)境了挺份。
3、docker基本命令
3.1优训、設(shè)置docker開機(jī)自啟動(dòng)--命令:sudo systemctl enable docker?
3.2各聘、docker重啟動(dòng)--命令:docker restart docker容器名
3.2、查看運(yùn)行的容器--命令:docker ps 【正在運(yùn)行的docker容器】
3.3早敬、查看所有的容器--命令:docker ps -a【包含已經(jīng)停止的容器】
3.4、指定容器啟動(dòng)--命令:docker start -i docker容器名
3.5琐驴、刪除docker容器--命令:docker rm docker容器名
3.6、創(chuàng)建并啟動(dòng)docker容器--命令:docker run -p 0.0.0.0::8888:80 -it --name=sx centos /bin/bash
此處說明:設(shè)置docker容器端口映射四種方式:
3.6.1苍姜、docker run -p 80 -i -t centos /bin/bash 【該方式指定容器端口-宿主機(jī)端口隨機(jī)】
3.6.2够委、docker run -p 8080:80 -i -t centos /bin/bash【該方式指定宿主機(jī)端口:容器端口】
3.6.3、docker run -p 0.0.0.0:80 -i -t centos /bin/bash 【該方式指定宿主機(jī)IP:容器端口】
3.6.4、docker run -p 0.0.0.0:8888:80 -i -t centos /bin/bash 【該方式指定宿主機(jī)IP:端口:容器端口】常用這種方式
通過3.6.4命令創(chuàng)建好容器后琅束,外部可以通過訪問宿主機(jī)IP:8080端口映射到docker容器的80端口涩禀。
3.7屿岂、守護(hù)式容器快捷退出鍵:CTRL+Q CTRL+P【此快捷鍵退出后爷怀,程序后臺(tái)正常運(yùn)行】
3.8运授、docker利用iptables防火墻技術(shù)實(shí)現(xiàn)用戶IP權(quán)限訪問喇完。
3.9、查看docker信息--命令:docker inspect docker容器名
3.10则涯、進(jìn)入運(yùn)行的docker容器--命令:docker attach docker容器
3.11复局、Linux與docker之間的文件傳輸--命令:
3.11.1:--宿主機(jī)Linux文件復(fù)制到容器docker中的命令:docker cp 要拷貝的文件路徑 容器名:要拷貝到容器里面對(duì)應(yīng)的路徑
示例:docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
3.11.2--docker容器復(fù)制到宿主機(jī)Linux中的命令:docker cp 容器名:要拷貝的文件在容器里面的路徑 要拷貝到宿主機(jī)的相應(yīng)路徑
示例:docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
3.12冲簿、離線下載docker鏡像復(fù)制到另一臺(tái)機(jī)器上
示例命令:打包鏡像:docker save +鏡像名 > 下載的路徑/打包名稱.tar(.tar包)
復(fù)制到另一臺(tái)名:docker load? < .tar包的位置
3.13、刪除鏡像名:docker rmi +鏡像ID
3.14亿昏、查看所有TCP端口--命令:netstat -ntlp
4峦剔、docker容器部署vue前端web項(xiàng)目
4.1、進(jìn)入docker容器:docker attach sx【docker容器名】 如圖:
a.安裝需要的環(huán)境角钩,docker默認(rèn)沒有vim編譯器--yum install vim?
b.安裝nginx--yum install nginx?
c.窗口文件夾用于存放web項(xiàng)目--mkdir /var/webapps/html
d.修改nginx的nginx.config配置文件路徑吝沫,改為項(xiàng)目的/var/webapps/html/dist
e.啟動(dòng)nginx--命令容器內(nèi):nginx。啟動(dòng)后外部可通過宿主機(jī)的ip:8888[上面設(shè)置的]訪問了递礼。