天天看點

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

前言:前幾天有粉絲問我,網上java面試題總是參差不齊,希望我為他整理一套全面的java面試題,并且這套java面試題有個要求,必須能夠讓他20天就能看完這些面試題,他說現在很多面試題我看都得看3個月才能看完,然後我才能去找工作,但是自己得時間有限是以想讓我幫他總結一套萬能面試java求職筆記。接下來我将會至少分為12個章節進行闡述這套Java求職筆記,感興趣的可以堅持看完!覺得不錯的可以點個贊。

1為什麼寫這套Java求職筆記

很早的時候我就想寫一些Java求職方向的一些文章,由于很長時間耽擱了加上,有粉絲背景問我,可不可以幫他總結一些java求職筆記,他看了很多Java技術有很多技術,很迷茫不知道學哪些,我笑着說,不要着急,無論你到什麼時候你都會迷茫,因為技術一直在更新,謝謝你信任我,解救你的迷茫唯一辦法就是多看LRyab部落格,就是這樣我帶着粉絲的問題,開始編寫了這套Java求職筆記,看完這套求職筆記,我相信很多人都會找到屬于自己的心儀工作。

2DevOps&Docker容器化技術知識大綱

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

3DevOps&Docker容器化技術

3.1DevOps簡介

DevOps 就是開發(Development)、測試(QA)、運維(Operations)這三個領域的合并。

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

DevOps是一種思想、一組最佳實踐、以及一種文化。DevOps落地實施,從組織架構、設計人員、流程、人員分工、人員技能到工具,變化很大,要求很高,完全颠覆了現有的開發運維模式,建設風險很高。

DevOps落地困境包括:

  • 涉及的部門多(開發中心、品質控制部門、生産運作部門);
  • 流程改造複雜;
  • 責任邊界需要重新劃分;
  • 自動化是核心問題。

如下圖,傳統開發和運維之間存在一堵牆,開發人員想改變而運維人員想要穩定。另外,傳統開發工具與運維工具也存在一堵牆,并沒有打通成為一條工具鍊。

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

3.2CICD

持續內建(Continuous Integration ,CI)

在傳統軟體開發過程中,內建通常發生在每個人都完成了各自的工作之後。在項目尾聲階段,通常內建還要痛苦的花費數周或者數月的時間來完成。持續內建是一個将內建提前至開發周期的早期階段的實踐方式,讓建構、測試和內建代碼更經常反複地發生。

開發人員通常使用一種叫做CI Server 的工具來做建構和內建。持續內建要求史蒂夫和安妮能夠自測代碼。分别測試各自代碼來保證它能夠正常工作,這些測試通常被稱為單元測試(Unit tests)。

代碼內建以後,當所有的單元測試通過,史蒂夫和安妮就得到了一個綠色建構(green build)。這表明他們已經成功地內建在一起,代碼正按照測試預期地在工作。然而,盡管內建代碼能夠成功地一起工作了,它仍未為生産做好準備,因為它沒有在類似生産的環境中測試和工作。在下面持續傳遞部分你可以了解到持續內建後面發生了什麼。

花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

持續傳遞(Continuous Delivery)

Continuous Delivery (CD) 持續傳遞是持續內建的延伸,将內建後的代碼部署到類生産環境,確定可以以可持續的方式快速向客戶釋出新的更改。如果代碼沒有問題,可以繼續手工部署到生産環境中。

持續部署(Continuous Deploy)

如果真的想獲得持續傳遞的好處,應該盡早部署到生産環境,以確定可以小批次釋出,在發生問題時可以輕松排除故障。于是有了持續部署。

我們通常将這個在不同環境釋出和測試的過程叫做部署流水線

持續部署是在持續傳遞的基礎上,把部署到生産環境的過程自動化。

3.3DevOps 與 CICD的差別及聯系

DevOps是CICD思想的延伸,CICD是DevOps的基礎核心,如果沒有CICD自動化的工具和流程,DevOps是沒有意義的。

4Docker容器化技術

1.Docker能幹什麼?

首先,Docker是容器技術的一種實作。

  • 簡化配置:源代碼、運作環境、配置都能夠打包到一個容器裡,這個容器可以運作在不同的環境裡,這樣開發、測試、生産環境會保持高度一緻。
  • 代碼流水化管理
  • 整合伺服器
  • 調試能力
  • 提升開發效率
  • 多租戶
  • 隔離應用
  • 快速部署

什麼是容器

  • 對軟體及其依賴的标準化打包
  • 能夠實作應用之間互相隔離
  • 共享同一個OS Kernel
  • 可以運作在很多主流作業系統上
花了20天的時間給粉絲整理的一套“最全“的Java求職筆記(十一)1為什麼寫這套Java求職筆記2DevOps&Docker容器化技術知識大綱3DevOps&Docker容器化技術4Docker容器化技術5個人說明

4.1Docker常用指令

1、Docker容器資訊##檢視docker容器版本

docker version

##檢視docker容器資訊

docker info

##檢視docker容器幫助

docker --help

2、鏡像操作

2.1、鏡像檢視

##列出本地images

docker images

##顯示鏡像完整資訊

docker images --no-trunc

2.2、鏡像搜尋

##搜尋倉庫MySQL鏡像

docker search mysql

## --filter=stars=600:隻顯示 starts>=600 的鏡像

docker search --filter=stars=600 mysql

## --no-trunc 顯示鏡像完整 DESCRIPTION 描述

docker search --no-trunc mysql

## --automated :隻列出 AUTOMATED=OK 的鏡像

docker search --automated mysql

2.3、鏡像下載下傳

##下載下傳Redis官方最新鏡像,相當于:docker pull redis:latest

docker pull redis

##下載下傳倉庫所有Redis鏡像

docker pull -a redis

##下載下傳私人倉庫鏡像

docker pull bitnami/redis

2.4、鏡像删除

##單個鏡像删除,相當于:docker rmi redis:latest

docker rmi redis

##強制删除(針對基于鏡像有運作的容器程序)

docker rmi -f redis

##多個鏡像删除,不同鏡像間以空格間隔

docker rmi -f redis tomcat nginx

##删除本地全部鏡像

docker rmi -f $(docker images -q)

2.5、鏡像建構

##(1)編寫dockerfile

cd /docker/dockerfile

vim mycentos

##(2)建構docker鏡像

docker build -f /docker/dockerfile/mycentos -t mycentos:1.1

3、容器操作

提示:對于容器的操作可使用CONTAINER ID 或 NAMES。

3.1、容器啟動

##建立并啟動容器,參數:-i 以互動模式運作容器;-t 為容器重新配置設定一個僞輸入終端;--name 為容器指定一個名稱

docker run -i -t --name mycentos

##背景啟動容器,參數:-d 已守護方式啟動容器

docker run -d mycentos

注意:此時使用"docker ps -a"會發現容器已經退出。這是docker的機制:要使Docker容器背景運作,就必須有一個前台程序。解決方案:将你要運作的程式以前台程序的形式運作。

##啟動一個或多個已經被停止的容器

docker start redis

##重新開機容器

docker restart redis

3.2、容器的進入與退出

##使用run方式在建立時進入

docker run -it centos /bin/bash

##關閉容器并退出

exit

##僅退出容器,不關閉

快捷鍵:Ctrl + P + Q

##直接進入centos 容器啟動指令的終端,不會啟動新程序,多個attach連接配接共享容器螢幕,參數:--sig-proxy=false 確定CTRL-D或CTRL-C不會關閉容器

docker attach --sig-proxy=false centos

##在 centos 容器中打開新的互動模式終端,可以啟動新程序,參數:-i 即使沒有附加也保持STDIN 打開;-t 配置設定一個僞終端

docker exec -i -t centos /bin/bash

##以互動模式在容器中執行指令,結果傳回到目前終端螢幕

docker exec -i -t centos ls -l /tmp

##以分離模式在容器中執行指令,程式背景運作,結果不會回報到目前終端

docker exec -d centos touch cache.txt

3.3、檢視容器

##檢視正在運作的容器

docker ps

##檢視正在運作的容器的ID

docker ps -q

##擷取鏡像redis的元資訊

docker inspect redis

##擷取正在運作的容器redis的 IP

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis

3.4、容器的停止與删除

##停止一個運作中的容器

docker stop redis

##殺掉一個運作中的容器

docker kill redis

##删除一個已停止的容器

docker rm redis

##删除一個運作中的容器

docker rm -f redis

##删除多個容器

docker rm -f $(docker ps -a -q)

docker ps -a -q | xargs docker rm

## -l 移除容器間的網絡連接配接,連接配接名為 db

docker rm -l db

## -v 删除容器,并删除容器挂載的資料卷

docker rm -v redis

3.5、生成鏡像

##基于目前redis容器建立一個新的鏡像;參數:-a 送出的鏡像作者;-c 使用Dockerfile指令來建立鏡像;-m :送出時的說明文字;-p :在commit時,将容器暫停

docker commit -a="DeepInThought" -m="my redis" [redis容器ID] myredis:v1.1

3.6、容器與主機間的資料拷貝

##将rabbitmq容器中的檔案copy至本地路徑

docker cp rabbitmq:/[container_path] [local_path]

##将主機檔案copy至rabbitmq容器

docker cp [local_path] rabbitmq:/[container_path]/

##将主機檔案copy至rabbitmq容器,目錄重命名為[container_path](注意與非重命名copy的差別)

docker cp [local_path] rabbitmq:/[container_path]

Docker更多實戰參考以前部落格内容

5個人說明

我是LRyab部落格,專注電商項目實戰開發,擅長網站搭建與技術問題指導,經驗是由一點一點積累的,思維也是由一天一天訓練出來的。謝謝大家的閱讀,原創不易,如果你認為文章對你有所幫助,就點個贊感謝大家支援,你的點贊是我持續寫作的動力!