在咱們前端部署項目的時候,須要把咱們項目的各類環境原封不動的搬到服務器上。而後若是有多個環境,好比開發環境-測試環境-預上線環境-線上環境等等,咱們就須要把這些環境等在多臺服務器上進行部署。而且要保證環境的版本要保持一致。可是docker就能夠解決這種問題。javascript
docker是利用go語言開發的應用容器引擎,基於容器化,沙箱化的應用部署技術,可用於自動化測試,打包,持續集成和發佈的應用場景。能夠用於數據庫的搭建。nginx服務器的搭建,nodejs,php等編程語言環境的搭建。容器是徹底使用沙箱機制,相互之間不會有任何接口。簡言之,就是能夠在Linux上鏡像使用的這麼一個容器。 可能這兒仍是不懂docker是幹嗎,那麼就打個比喻:我來到一片空地,想建個房子,因而我搬石頭、砍木頭、畫圖紙,一頓操做,終於把這個房子蓋好了。結果,我住了一段時間,想搬到另外一片空地去。這時候,按以往的辦法,我只能再次搬石頭、砍木頭、畫圖紙、蓋房子。可是,跑來一個老巫婆,教會我一種魔法。這種魔法,能夠把我蓋好的房子複製一份,作成「鏡像」,放在個人揹包裏。等我到了另外一片空地,就用這個「鏡像」,複製一套房子,擺在那邊,拎包入住。這種魔法就是dockerphp
容器化是將應用程序或服務。以及其依賴的配置,一塊兒打包成容器映像的一種軟件開發方法前端
方法一:vue
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo (能夠換成阿里源)
複製代碼
sudo yum install docker-ce docker-ce-cli containerd.io
複製代碼
這樣會安裝最新版本,你也能夠指定版本安裝java
// 查看全部版本
yum list docker-ce --showduplicates | sort -r
// 安裝指定版本,把<VERSION_STRING>替換成相應的版本就行
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
複製代碼
sudo systemctl start docker
sudo systemctl enable docker
複製代碼
docker -v
docker run hello-world
複製代碼
方法二:利用腳本安裝(生產環境不推薦使用,本身學習的時候能夠用)node
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
// 加入用戶組
usermod -aG docker your-user
複製代碼
官網安裝教程:docs.docker.com/engine/inst…linux
Docker鏡像(Image)相似與虛擬機的鏡像,能夠將他理解爲一個面向Docker引擎的只讀模板,包含了文件系統。 例如:一個鏡像能夠徹底包含了Ubuntu操做系統環境,能夠把它稱做一個Ubuntu鏡像。鏡像也能夠安裝了Apache應用程序(或其餘軟件),能夠把它稱爲一個Apache鏡像。 鏡像是建立Docker容器的基礎,經過版本管理和增量的文件系統,Docker提供了一套十分簡單的機制來建立和更新現有的鏡像。 用戶能夠從網上下載一個已經作好的應用鏡像,並經過命令直接使用。 總之,應用運行是須要環境的,而鏡像就是來提供這種環境。(有點相似於前端的no_modules裏面的文件)
3. Docker容器 Docker容器(Container)相似於一個輕量級的沙箱子(由於Docker是基於Linux內核的虛擬技術,因此消耗資源十分少),Docker利用容器來運行和隔離應用。 容器是從鏡像建立的應用運行實例,能夠將其啓動、開始、中止、刪除,而這些容器都是相互隔離、互不可見的。 能夠把每一個容器看做一個簡易版的Linux系統環境(包括了root用戶權限、進程空間、用戶空間和網絡空間),以及與運行在其中的應用程序打包而成的應用盒子。 鏡像自身是隻讀的。容器從鏡像啓動的時候,Docker會在鏡像的最上層建立一個可寫層,鏡像自己將保持不變。就像用ISO裝系統以後,ISO並無什麼變化同樣。nginx
1.docker pull hello-world 從倉庫拉取鏡像
2.docker images 查看本地鏡像
3.docker run hello-world // 若果本地沒有鏡像,就會拉取,並運行,若是有鏡像,就會直接運行鏡像,生成一個容器
4.docker ps //查看正在運行的容器
5.docker ps -a // 查看全部容器
6.docker stop hello-world // 中止正在運行的容器
7.docker start hello-world // 啓動容器
8.docker restart hello-world // 重啓容器
9.docker rm hello-world // 刪除容器
10.docker rmi hello-world // 刪除鏡像
複製代碼
可能你們仍是很陌生,那麼我這裏用兩個實例來演示一下這些命令git
docker pull nginx // 拉取nginx的鏡像並運行
docker images // 查看鏡像
docker run -d -p 8000:80 --name my-nginx nginx
參數說明:
-d 以守護模式運行鏡像,也就是後臺運行
-p 宿主機端口映射的鏡像端口,左邊是宿主機端口,右邊是鏡像端口,80是Nginx訪問端口
--name給容器起一個惟一的別名
這裏就啓動了nginx 在瀏覽器輸入; ip:8080就能夠看到nginx啓動成功
docker ps // 查看容器
複製代碼
docker pull node:latest // :latest 表示最新版本。能夠指定對應的版本
docker run -itd --name node-test node // 運行node
參數說明
-d :分離模式: 在後臺運行
-i :容器的標準輸入保持打開
-t :讓docker分配一個僞終端並綁定到容器的標準輸入上
docker exec -it node-test /bin/bash // 經過 exec 命令對指定的容器執行 bash
node -v
複製代碼
docker run -u root -itd --name jenkins -p 9000:8080 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/jenkins:/var/jenkins_home jenkins/jenkins
複製代碼
啓動命令含義 -u root: 權限等級爲root
-p 9000:8080 Jenkins默認網頁訪問端口爲8080,將端口映射到外部主機
-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock使Jenkins內部可使用docker命令
-v /volume1/docker/jenkins:/var/jenkins_home 將Jenkins的配置映射到外部主機卷,容器刪除仍可保留配置github
等瀏覽器初始化jenkins成功後,會提示須要一個初始密碼,這個時候,咱們能夠到/volume1/docker/jenkins/secrets/initialAdminPassword 查看密碼
2. 安裝node.js 3. 進入 4. 配置node 5. 安裝(這個是爲了在後面構建項目的時候,能夠自由的選擇分支) 6.這樣jenkins初始化就完成了。咱們開始初始化一個vue3項目到github上 7. 開始配置jenkins 8. 參數化構建(後面能夠選擇分支)
9. 綁定github 10. 添加node 11. 執行腳本(這裏利用docker去安裝nginx,並映射到9001端口) 12. 開始構建 13. 完成構建,能夠到對應的地址+端口號訪問你的前端項目。